1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
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.SscMode;
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.gui.helper.QuitNotification;
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;
@SuppressWarnings("serial")
public class UploadPanel extends TransferPanel implements QuitNotification {
private static final Logger LOGGER = Logger.getLogger(UploadPanel.class);
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)
|| Session.getSatelliteConfig().serverSideCopy != SscMode.USER) {
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);
}
private class ButtonAction implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
if (!state.getUploadTask().isCanceled()) {
if (!Gui.showMessageBox(panel, "Wollen Sie diesen Transfer wirklich abbrechen?",
MessageType.QUESTION_YESNO, null, null))
return;
QuickTimer.scheduleOnce(new Task() {
@Override
public void fire() {
state.cancelError();
}
});
}
state.getUploadTask().removeListener(panel);
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);
}
});
}
});
}
}
@Override
public void onApplicationQuit() {
// Application quit, tell server we cancel
state.cancelError();
}
}
|