summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/UploadPanel.java
diff options
context:
space:
mode:
authorSimon Rettberg2018-05-12 16:19:55 +0200
committerSimon Rettberg2018-05-12 16:19:55 +0200
commitd324ed28fe622b48c0c3d420b949070ec4f895c7 (patch)
treed0411b453ce2f9b9655993cb9af0b8c916c50934 /dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/UploadPanel.java
parent[client] Fix call (diff)
downloadtutor-module-d324ed28fe622b48c0c3d420b949070ec4f895c7.tar.gz
tutor-module-d324ed28fe622b48c0c3d420b949070ec4f895c7.tar.xz
tutor-module-d324ed28fe622b48c0c3d420b949070ec4f895c7.zip
[client] UploadPanel: Add checkbox to toggle server side copying
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/UploadPanel.java')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/UploadPanel.java59
1 files changed, 59 insertions, 0 deletions
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 d71a4a1c..ea339651 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
@@ -3,11 +3,21 @@ package org.openslx.dozmod.gui.activity;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import javax.swing.Box;
+import javax.swing.JCheckBox;
+
import org.apache.log4j.Logger;
+import org.apache.thrift.TException;
+import org.openslx.bwlp.thrift.iface.TAuthorizationException;
+import org.openslx.bwlp.thrift.iface.TInvalidTokenException;
+import org.openslx.bwlp.thrift.iface.UploadOptions;
import org.openslx.dozmod.gui.Gui;
import org.openslx.dozmod.gui.helper.MessageType;
import org.openslx.dozmod.state.UploadWizardState;
+import org.openslx.dozmod.thrift.Session;
import org.openslx.dozmod.thrift.UploadInitiator;
+import org.openslx.sat.thrift.version.Feature;
+import org.openslx.thrifthelper.ThriftManager;
import org.openslx.util.QuickTimer;
import org.openslx.util.QuickTimer.Task;
@@ -19,9 +29,19 @@ public class UploadPanel extends TransferPanel {
private final UploadInitiator state;
private final UploadPanel panel = this;
+
+ private final JCheckBox chkServerSideCopy;
public UploadPanel(UploadWizardState state) {
super(state.upload.getUploadTask(), state.name, state.diskFile.getName());
+ if (!Session.hasFeature(Feature.SERVER_SIDE_COPY)) {
+ chkServerSideCopy = null;
+ } else {
+ chkServerSideCopy = new JCheckBox("ServerSide Copy");
+ footer.add(Box.createHorizontalStrut(15));
+ footer.add(chkServerSideCopy);
+ chkServerSideCopy.addActionListener(new SscToggle());
+ }
btnClose.addActionListener(new ButtonAction());
this.state = state.upload;
state.upload.getUploadTask().addListener(this);
@@ -45,4 +65,43 @@ public class UploadPanel extends TransferPanel {
close();
}
}
+
+ private class SscToggle implements ActionListener {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ final UploadOptions options = new UploadOptions(chkServerSideCopy.isSelected());
+ QuickTimer.scheduleOnce(new Task() {
+ @Override
+ public void fire() {
+ boolean dis = false;
+ UploadOptions newOpt = null;
+ try {
+ newOpt = ThriftManager.getSatClient().setUploadOptions(Session.getSatelliteToken(),
+ state.getToken(), options);
+ } catch (TAuthorizationException | TInvalidTokenException e) {
+ dis = true;
+ } catch (TException e) {
+ Gui.asyncMessageBox("Unerwarteter Fehler beim Setzen der Transferoptionen",
+ MessageType.ERROR, LOGGER, e);
+ }
+ final UploadOptions newOptions = newOpt;
+ final boolean disableBox = dis;
+ Gui.asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ chkServerSideCopy.setEnabled(!disableBox);
+ if (newOptions == null) {
+ // Most likely error, revert
+ chkServerSideCopy.setSelected(!chkServerSideCopy.isSelected());
+ } else if (newOptions.isSetServerSideCopying()) {
+ chkServerSideCopy.setSelected(newOptions.serverSideCopying);
+ }
+ progress.showOptimisticComplete(newOptions != null
+ && newOptions.isSetServerSideCopying() && newOptions.serverSideCopying);
+ }
+ });
+ }
+ });
+ }
+ }
}