diff options
author | Simon Rettberg | 2018-05-12 16:19:55 +0200 |
---|---|---|
committer | Simon Rettberg | 2018-05-12 16:19:55 +0200 |
commit | d324ed28fe622b48c0c3d420b949070ec4f895c7 (patch) | |
tree | d0411b453ce2f9b9655993cb9af0b8c916c50934 /dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity | |
parent | [client] Fix call (diff) | |
download | tutor-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')
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/TransferPanel.java | 2 | ||||
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/UploadPanel.java | 59 |
2 files changed, 60 insertions, 1 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/TransferPanel.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/TransferPanel.java index 4d3155e2..00ce10d3 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/TransferPanel.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/TransferPanel.java @@ -49,7 +49,7 @@ public abstract class TransferPanel extends ActivityPanel implements TransferEve private JPanel progressWrapper; - private JPanel footer; + protected JPanel footer; public TransferPanel(TransferEventEmitter transfer, String displayName, String fileName) { setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS)); 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); + } + }); + } + }); + } + } } |