diff options
author | Jonathan Bauer | 2018-09-10 12:15:46 +0200 |
---|---|---|
committer | Jonathan Bauer | 2018-09-10 12:15:46 +0200 |
commit | 941bb1158224c7e9cd739dccc83024a809084f14 (patch) | |
tree | a86895e8d31ddf935ee2bb7efc8165ffe46f55fb /dozentenmodul | |
parent | [client] fix location tree not triggering change monitor (diff) | |
download | tutor-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.java | 47 |
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); } }); |