From 941bb1158224c7e9cd739dccc83024a809084f14 Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Mon, 10 Sep 2018 12:15:46 +0200 Subject: [client] async fetch of image details --- .../dozmod/gui/window/LectureDetailsWindow.java | 47 ++++++++++++++-------- 1 file changed, 31 insertions(+), 16 deletions(-) (limited to 'dozentenmodul') 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; @@ -84,6 +87,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. */ @@ -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 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); } }); -- cgit v1.2.3-55-g7522