summaryrefslogtreecommitdiffstats
path: root/dozentenmodul
diff options
context:
space:
mode:
authorJonathan Bauer2018-09-10 12:15:46 +0200
committerJonathan Bauer2018-09-10 12:15:46 +0200
commit941bb1158224c7e9cd739dccc83024a809084f14 (patch)
treea86895e8d31ddf935ee2bb7efc8165ffe46f55fb /dozentenmodul
parent[client] fix location tree not triggering change monitor (diff)
downloadtutor-module-941bb1158224c7e9cd739dccc83024a809084f14.tar.gz
tutor-module-941bb1158224c7e9cd739dccc83024a809084f14.tar.xz
tutor-module-941bb1158224c7e9cd739dccc83024a809084f14.zip
[client] async fetch of image details
Diffstat (limited to 'dozentenmodul')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java47
1 files changed, 31 insertions, 16 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java
index ff989a98..74119cd2 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java
@@ -23,6 +23,7 @@ import javax.swing.JOptionPane;
import org.apache.log4j.Logger;
import org.apache.thrift.TException;
import org.openslx.bwlp.thrift.iface.ImageDetailsRead;
+import org.openslx.bwlp.thrift.iface.ImagePermissions;
import org.openslx.bwlp.thrift.iface.ImageSummaryRead;
import org.openslx.bwlp.thrift.iface.ImageVersionDetails;
import org.openslx.bwlp.thrift.iface.LecturePermissions;
@@ -44,9 +45,11 @@ import org.openslx.dozmod.gui.window.UserListWindow.UserAddedCallback;
import org.openslx.dozmod.gui.window.layout.LectureDetailsWindowLayout;
import org.openslx.dozmod.permissions.ImagePerms;
import org.openslx.dozmod.permissions.LecturePerms;
+import org.openslx.dozmod.thrift.ImageLocalDetailsActions;
import org.openslx.dozmod.thrift.Session;
import org.openslx.dozmod.thrift.ThriftActions;
import org.openslx.dozmod.thrift.ThriftActions.DownloadCallback;
+import org.openslx.dozmod.thrift.ThriftActions.ImageMetaCallback;
import org.openslx.dozmod.thrift.ThriftActions.LectureMetaCallback;
import org.openslx.dozmod.thrift.ThriftError;
import org.openslx.dozmod.thrift.cache.UserCache;
@@ -85,6 +88,11 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
private LectureRead lecture = null;
/**
+ * Action handler proxying thrift calls for image related operations
+ */
+ private final ImageLocalDetailsActions actionHandler;
+
+ /**
* Image, that the lecture is linked to.
*/
private ImageDetailsRead image = null;
@@ -187,26 +195,33 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
}
});
+ actionHandler = new ImageLocalDetailsActions(JOptionPane.getFrameForComponent(LectureDetailsWindow.this));
+
btnLinkImage.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
- ImageSummaryRead newImage = LectureChangeImage.open(me);
- if (newImage != null) {
- try {
- // TODO: Async!?
- image = ThriftManager.getSatClient().getImageDetails(Session.getSatelliteToken(),
- newImage.imageBaseId);
- } catch (TException e1) {
- LOGGER.error("Failed to retrieve details of new image: ", e1);
- return;
+ final ImageSummaryRead newImage = LectureChangeImage.open(me);
+ if (newImage == null)
+ return;
+ final ImageMetaCallback callback = new ImageMetaCallback() {
+ @Override
+ public void fetchedImageDetails(ImageDetailsRead imageDetails,
+ Map<String, ImagePermissions> permissions) {
+ if (imageDetails == null) {
+ return;
+ }
+ synchronized (me) {
+ image = imageDetails;
+ }
+ lecture.imageBaseId = newImage.imageBaseId;
+ lecture.imageVersionId = newImage.latestVersionId;
+ fillVersionsCombo();
+ cboVersions.setEnabled(false);
+ chkAutoUpdate.setSelected(true);
+ txtImageName.setText(newImage.getImageName());
}
- lecture.imageBaseId = newImage.imageBaseId;
- lecture.imageVersionId = newImage.latestVersionId;
- fillVersionsCombo();
- cboVersions.setEnabled(false);
- chkAutoUpdate.setSelected(true);
- txtImageName.setText(newImage.getImageName());
- }
+ };
+ actionHandler.getImageDetails(newImage.imageBaseId, callback);
}
});