blob: add3a4f43e53beca34fd36489cc681649bab42f8 (
plain) (
tree)
|
|
package org.openslx.dozmod.gui.wizard.page;
import java.awt.KeyboardFocusManager;
import java.awt.Window;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.openslx.bwlp.thrift.iface.ImageSummaryRead;
import org.openslx.bwlp.thrift.iface.TransferState;
import org.openslx.dozmod.Branding;
import org.openslx.dozmod.filetransfer.TransferEvent;
import org.openslx.dozmod.filetransfer.TransferEventListener;
import org.openslx.dozmod.gui.Gui;
import org.openslx.dozmod.gui.MainWindow;
import org.openslx.dozmod.gui.helper.I18n;
import org.openslx.dozmod.gui.wizard.LectureWizard;
import org.openslx.dozmod.gui.wizard.Wizard;
import org.openslx.dozmod.gui.wizard.layout.ImageUploadSummaryPageLayout;
import org.openslx.dozmod.state.UploadWizardState;
import org.openslx.dozmod.thrift.UploadInitiator.UploadInitState;
import org.openslx.dozmod.thrift.cache.ImageCache;
import org.openslx.util.QuickTimer;
public class ImageUploadSummaryPage extends ImageUploadSummaryPageLayout {
/**
* Version for serialization.
*/
private static final long serialVersionUID = -319910198640112507L;
private static final Logger LOGGER = LogManager.getLogger(ImageUploadSummaryPage.class);
private boolean pageIsVisible = false;
private boolean uploadListenerAdded = false;
private boolean allowCreateLecture = false;
private final UploadWizardState state;
private final TransferEventListener uploadListener = new TransferEventListener() {
@Override
public void update(TransferEvent event) {
if (!pageIsVisible)
return;
if (event.progress != null) {
ctlUploadProgressBar.setStatus(event);
}
if (event.state == TransferState.FINISHED) {
updateInfoText(null);
state.upload.getUploadTask().removeListener(uploadListener);
}
}
};
private final QuickTimer.Task updateHelpText = new QuickTimer.Task() {
private UploadInitState lastInitState = null;
@Override
public void fire() {
LOGGER.debug("update help text");
if (!pageIsVisible) {
this.cancel();
return;
}
if (!uploadListenerAdded && state.upload.getUploadTask() != null) {
uploadListenerAdded = true;
state.upload.getUploadTask().addListener(uploadListener);
}
UploadInitState initState = state.upload.getState();
if (initState != lastInitState) {
lastInitState = initState;
updateInfoText(initState);
}
if (lastInitState == UploadInitState.UPLOAD_STARTED || lastInitState == UploadInitState.ERROR) {
this.cancel();
}
}
};
private void updateInfoText(final UploadInitState initState) {
String text;
if (state.upload.getUploadTask() != null && state.upload.getUploadTask().isComplete()) {
text = I18n.PAGE.getString("ImageUploadSummary.UploadInitState.completed");
} else if (initState == null) {
return;
} else {
switch (initState) {
case REQUESTING:
text = I18n.PAGE.getString("ImageUploadSummary.UploadInitState.requesting");
break;
case WAITING_FOR_SLOT:
text = I18n.PAGE.getString("ImageUploadSummary.UploadInitState.waitingForSlot");
break;
case UPLOAD_STARTING:
text = I18n.PAGE.getString("ImageUploadSummary.UploadInitState.uploadStarting");
break;
case UPLOAD_STARTED:
text = I18n.PAGE.getString("ImageUploadSummary.UploadInitState.uploadStarted");
break;
case ERROR:
text = I18n.PAGE.getString("ImageUploadSummary.UploadInitState.error", Branding.getServiceName());
if (state.upload.getErrorMessage() != null) {
text += I18n.PAGE.getString("ImageUploadSummary.UploadInitState.errorMoreInfo",
state.upload.getErrorMessage());
}
break;
default:
return;
}
}
final String t = text;
Gui.asyncExec(new Runnable() {
@Override
public void run() {
lblHelpText.setText("<html><body style ='width:100%'>" + t + "</body></html>");
if (initState == UploadInitState.UPLOAD_STARTED) {
setPageComplete(true);
}
if (state.upload.getUploadTask() != null && state.upload.getUploadTask().isComplete()) {
chkCreateLecture.setVisible(allowCreateLecture);
}
}
});
}
public ImageUploadSummaryPage(Wizard wizard, UploadWizardState state, boolean allowCreateLecture) {
super(wizard);
this.state = state;
this.allowCreateLecture = allowCreateLecture;
setPageComplete(false);
}
@Override
protected void onPageEnter() {
if (pageIsVisible)
return;
pageIsVisible = true;
updateInfoText(UploadInitState.REQUESTING);
QuickTimer.scheduleAtFixedDelay(updateHelpText, 500, 3000);
}
@Override
protected void onPageLeave() {
if (!pageIsVisible)
return;
pageIsVisible = false;
if (state == null)
return;
// optional lectureWizard
if (state.upload != null && state.upload.getUploadTask() != null) {
state.upload.getUploadTask().removeListener(uploadListener);
}
if (!wizard.isCancelled() && !state.upload.getUploadTask().isCanceled()) {
MainWindow.addUpload(state);
}
if (!wizard.isCancelled() && chkCreateLecture.isSelected()) {
wizard.setVisible(false);
Window parent = KeyboardFocusManager.getCurrentKeyboardFocusManager().getActiveWindow();
ImageSummaryRead image = null;
for (ImageSummaryRead tmpImage : ImageCache.get(true)) {
if (tmpImage.imageBaseId.equals(state.uuid)) {
image = tmpImage;
break;
}
}
if (image != null) {
new LectureWizard(parent, image, state.upload.getToken()).setVisible(true);
} else {
LOGGER.error("Couldn't find the new image in the image cache.");
//TODO could this happen? Show messagebox then?
}
}
}
}
|