summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity
diff options
context:
space:
mode:
authorSimon Rettberg2015-08-11 19:19:03 +0200
committerSimon Rettberg2015-08-11 19:19:03 +0200
commit3946cc23a61fdb4bc830a64e5993817abf055b1b (patch)
tree9dbd00563e2e0d55804381217677054116f29476 /dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity
parent[client] Back off with reconnects for file transfers if it fails too often (diff)
downloadtutor-module-3946cc23a61fdb4bc830a64e5993817abf055b1b.tar.gz
tutor-module-3946cc23a61fdb4bc830a64e5993817abf055b1b.tar.xz
tutor-module-3946cc23a61fdb4bc830a64e5993817abf055b1b.zip
[client] Add DownloadPanel to show progress of images being downloaded
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/DownloadPanel.java42
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/TransferPanel.java138
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/UploadPanel.java123
3 files changed, 183 insertions, 120 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/DownloadPanel.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/DownloadPanel.java
new file mode 100644
index 00000000..27e17f53
--- /dev/null
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/DownloadPanel.java
@@ -0,0 +1,42 @@
+package org.openslx.dozmod.gui.activity;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import org.openslx.dozmod.filetransfer.DownloadTask;
+import org.openslx.dozmod.gui.Gui;
+import org.openslx.dozmod.gui.helper.MessageType;
+
+@SuppressWarnings("serial")
+public class DownloadPanel extends TransferPanel {
+
+ private final DownloadPanel panel = this;
+
+ private final DownloadTask download;
+
+ public DownloadPanel(String displayName, String diskFile, DownloadTask download) {
+ super(download, displayName, diskFile);
+ btnClose.addActionListener(new ButtonAction());
+ this.download = download;
+ download.addListener(this);
+ }
+
+ @Override
+ public boolean wantConfirmQuit() {
+ return download != null && !download.isCanceled();
+ }
+
+ private class ButtonAction implements ActionListener {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ if (!download.isCanceled()) {
+ if (!Gui.showMessageBox(panel, "Wollen Sie diesen Transfer wirklich abbrechen?",
+ MessageType.QUESTION_YESNO, null, null))
+ return;
+ download.cancel();
+ }
+ download.removeListener(panel);
+ close();
+ }
+ }
+}
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
new file mode 100644
index 00000000..f847a8ef
--- /dev/null
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/TransferPanel.java
@@ -0,0 +1,138 @@
+package org.openslx.dozmod.gui.activity;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.GridLayout;
+
+import javax.swing.BorderFactory;
+import javax.swing.Box;
+import javax.swing.BoxLayout;
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+import org.openslx.dozmod.filetransfer.TransferEvent;
+import org.openslx.dozmod.filetransfer.TransferEventListener;
+import org.openslx.dozmod.filetransfer.TransferTask;
+import org.openslx.dozmod.gui.Gui;
+import org.openslx.dozmod.gui.control.BlockProgressBar;
+
+@SuppressWarnings("serial")
+public abstract class TransferPanel extends ActivityPanel implements TransferEventListener {
+
+ protected final JLabel lblStatus;
+
+ protected final JLabel lblError;
+
+ protected final JLabel lblSpeed;
+
+ protected final JLabel lblRemaining;
+
+ protected final JButton btnClose;
+
+ protected final BlockProgressBar progress;
+
+ private final TransferTask transfer;
+
+ private final TransferPanel panel = this;
+
+ private final Color defaultLabelColor;
+
+ private int errorCountdown = 0;
+
+ public TransferPanel(TransferTask transfer, String displayName, String fileName) {
+ setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
+ setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
+ // Header: [status] VM-Name ---- fileName [Button]
+ JPanel header = new JPanel();
+ header.setLayout(new BoxLayout(header, BoxLayout.LINE_AXIS));
+ lblStatus = new JLabel("[init]");
+ header.add(lblStatus);
+ header.add(Box.createHorizontalStrut(10));
+ JLabel vmName = new JLabel(displayName);
+ vmName.setFont(vmName.getFont().deriveFont(Font.BOLD));
+ header.add(vmName);
+ header.add(Box.createHorizontalGlue());
+ header.add(new JLabel(fileName));
+ header.add(Box.createHorizontalStrut(10));
+ btnClose = new JButton("Abbrechen");
+ header.add(btnClose);
+ add(header);
+ // ProgressBar
+ JPanel progressWrapper = new JPanel();
+ progressWrapper.setLayout(new GridLayout(1, 1));
+ progressWrapper.setMinimumSize(new Dimension(0, 50));
+ progressWrapper.setPreferredSize(progressWrapper.getMinimumSize());
+ progress = new BlockProgressBar(null);
+ progressWrapper.add(progress);
+ add(progressWrapper);
+ // Speed & error
+ JPanel footer = new JPanel();
+ footer.setLayout(new BoxLayout(footer, BoxLayout.LINE_AXIS));
+ lblError = new JLabel();
+ lblSpeed = new JLabel("-");
+ lblRemaining = new JLabel("-");
+ lblSpeed.setMinimumSize(new Dimension(50, 0));
+ lblRemaining.setMinimumSize(new Dimension(60, 0));
+ footer.add(lblError);
+ footer.add(Box.createGlue());
+ footer.add(lblSpeed);
+ footer.add(Box.createRigidArea(new Dimension(6, 6)));
+ footer.add(lblRemaining);
+ add(footer);
+ this.transfer = transfer;
+ defaultLabelColor = lblError.getForeground();
+ }
+
+ @Override
+ public void update(final TransferEvent event) {
+ Gui.asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ // Any error message?
+ if (event.errorMessage != null && !event.errorMessage.isEmpty()) {
+ lblError.setText(event.errorMessage);
+ lblError.setForeground(Color.RED);
+ errorCountdown = 20;
+ } else if (errorCountdown > 0) {
+ errorCountdown--;
+ if (errorCountdown == 10) {
+ lblError.setForeground(defaultLabelColor);
+ } else if (errorCountdown == 0) {
+ lblError.setText("");
+ }
+ }
+ // Status?
+ if (event.state != null) {
+ switch (event.state) {
+ case ERROR:
+ errorCountdown = 20;
+ break;
+ case FINISHED:
+ btnClose.setText("Schließen");
+ lblRemaining.setText("-");
+ transfer.removeListener(panel);
+ break;
+ default:
+ break;
+ }
+ lblStatus.setText(event.state.toString());
+ }
+ // Remaining + Speed
+ if (event.remainingRaw != 0) {
+ lblRemaining.setText(event.remaining);
+ }
+ if (event.speedRaw != 0) {
+ lblSpeed.setText(event.speed);
+ }
+ // Progress bar
+ if (event.progress != null) {
+ progress.setStatus(event.progress);
+ }
+ panel.validate();
+ }
+ });
+ }
+
+}
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 46ffb51c..480a612b 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
@@ -1,24 +1,10 @@
package org.openslx.dozmod.gui.activity;
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Font;
-import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
-import javax.swing.BorderFactory;
-import javax.swing.Box;
-import javax.swing.BoxLayout;
-import javax.swing.JButton;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-
import org.apache.log4j.Logger;
-import org.openslx.dozmod.filetransfer.TransferEvent;
-import org.openslx.dozmod.filetransfer.TransferEventListener;
import org.openslx.dozmod.gui.Gui;
-import org.openslx.dozmod.gui.control.BlockProgressBar;
import org.openslx.dozmod.gui.helper.MessageType;
import org.openslx.dozmod.state.UploadWizardState;
import org.openslx.thrifthelper.ThriftManager;
@@ -26,73 +12,18 @@ import org.openslx.util.QuickTimer;
import org.openslx.util.QuickTimer.Task;
@SuppressWarnings("serial")
-public class UploadPanel extends ActivityPanel implements TransferEventListener {
+public class UploadPanel extends TransferPanel {
private static final Logger LOGGER = Logger.getLogger(UploadPanel.class);
- private final JLabel lblStatus;
-
- private final JLabel lblError;
-
- private final JLabel lblSpeed;
-
- private final JLabel lblRemaining;
-
- private final BlockProgressBar progress;
-
private final UploadWizardState state;
private final UploadPanel panel = this;
- private final Color defaultLabelColor;
-
- private int errorCountdown = 0;
-
- private final JButton btnClose;
-
public UploadPanel(UploadWizardState state) {
- this.state = state;
- setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
- setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
- // Header: [status] VM-Name ---- fileName [Button]
- JPanel header = new JPanel();
- header.setLayout(new BoxLayout(header, BoxLayout.LINE_AXIS));
- lblStatus = new JLabel("[init]");
- header.add(lblStatus);
- header.add(Box.createHorizontalStrut(10));
- JLabel vmName = new JLabel(state.name);
- vmName.setFont(vmName.getFont().deriveFont(Font.BOLD));
- header.add(vmName);
- header.add(Box.createHorizontalGlue());
- header.add(new JLabel(state.diskFile.getName()));
- header.add(Box.createHorizontalStrut(10));
- btnClose = new JButton("Abbrechen");
+ super(state.uploadTask, state.name, state.diskFile.getName());
btnClose.addActionListener(new ButtonAction());
- header.add(btnClose);
- add(header);
- // ProgressBar
- JPanel progressWrapper = new JPanel();
- progressWrapper.setLayout(new GridLayout(1, 1));
- progressWrapper.setMinimumSize(new Dimension(0, 50));
- progressWrapper.setPreferredSize(progressWrapper.getMinimumSize());
- progress = new BlockProgressBar(null);
- progressWrapper.add(progress);
- add(progressWrapper);
- // Speed & error
- JPanel footer = new JPanel();
- footer.setLayout(new BoxLayout(footer, BoxLayout.LINE_AXIS));
- lblError = new JLabel();
- lblSpeed = new JLabel("-");
- lblRemaining = new JLabel("-");
- lblSpeed.setMinimumSize(new Dimension(50, 0));
- lblRemaining.setMinimumSize(new Dimension(60, 0));
- footer.add(lblError);
- footer.add(Box.createGlue());
- footer.add(lblSpeed);
- footer.add(Box.createRigidArea(new Dimension(6, 6)));
- footer.add(lblRemaining);
- add(footer);
- defaultLabelColor = lblError.getForeground();
+ this.state = state;
state.uploadTask.addListener(this);
}
@@ -124,52 +55,4 @@ public class UploadPanel extends ActivityPanel implements TransferEventListener
close();
}
}
-
- @Override
- public void update(final TransferEvent event) {
- Gui.asyncExec(new Runnable() {
- @Override
- public void run() {
- // Any error message?
- if (event.errorMessage != null && !event.errorMessage.isEmpty()) {
- lblError.setText(event.errorMessage);
- lblError.setForeground(Color.RED);
- errorCountdown = 20;
- } else if (errorCountdown > 0) {
- errorCountdown--;
- if (errorCountdown == 10) {
- lblError.setForeground(defaultLabelColor);
- } else if (errorCountdown == 0) {
- lblError.setText("");
- }
- }
- // Status?
- if (event.state != null) {
- switch (event.state) {
- case ERROR:
- errorCountdown = 20;
- break;
- case FINISHED:
- btnClose.setText("Schließen");
- lblRemaining.setText("-");
- state.uploadTask.removeListener(panel);
- break;
- }
- lblStatus.setText(event.state.toString());
- }
- // Remaining + Speed
- if (event.remainingRaw != 0) {
- lblRemaining.setText(event.remaining);
- }
- if (event.speedRaw != 0) {
- lblSpeed.setText(event.speed);
- }
- // Progress bar
- if (event.progress != null) {
- progress.setStatus(event.progress);
- }
- panel.validate();
- }
- });
- }
}