summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main
diff options
context:
space:
mode:
authorSimon Rettberg2015-08-03 17:13:24 +0200
committerSimon Rettberg2015-08-03 17:13:24 +0200
commit0639a920e264a11176b90f9b1c0e116973d27de7 (patch)
tree5a9b4b63637c83199b5ce359c242df7befc7fa69 /dozentenmodul/src/main
parent[client] Minor tweaks (diff)
downloadtutor-module-0639a920e264a11176b90f9b1c0e116973d27de7.tar.gz
tutor-module-0639a920e264a11176b90f9b1c0e116973d27de7.tar.xz
tutor-module-0639a920e264a11176b90f9b1c0e116973d27de7.zip
[client] Add ActivityPanel to MainWindow
Diffstat (limited to 'dozentenmodul/src/main')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java51
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/ActivityPanel.java23
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/UploadPanel.java70
3 files changed, 138 insertions, 6 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java
index 369ce084..efef7a0c 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java
@@ -10,6 +10,9 @@ import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -24,6 +27,8 @@ import org.apache.log4j.Logger;
import org.openslx.dozmod.App;
import org.openslx.dozmod.Config;
import org.openslx.dozmod.gui.Gui.GuiCallable;
+import org.openslx.dozmod.gui.activity.ActivityPanel;
+import org.openslx.dozmod.gui.activity.UploadPanel;
import org.openslx.dozmod.gui.helper.CompositePage;
import org.openslx.dozmod.gui.helper.DebugWindow;
import org.openslx.dozmod.gui.helper.MessageType;
@@ -33,6 +38,7 @@ import org.openslx.dozmod.gui.window.LectureListWindow;
import org.openslx.dozmod.gui.window.LoginWindow;
import org.openslx.dozmod.gui.window.MainMenuWindow;
import org.openslx.dozmod.gui.window.VirtualizerNoticeWindow;
+import org.openslx.dozmod.state.UploadWizardState;
import org.openslx.dozmod.thrift.Session;
import org.openslx.thrifthelper.ThriftManager;
import org.openslx.thrifthelper.ThriftManager.ErrorCallback;
@@ -42,7 +48,8 @@ public abstract class MainWindow {
private final static Logger LOGGER = Logger.getLogger(MainWindow.class);
private static final JFrame mainWindow;
- private static final JPanel mainContainer = new JPanel();
+ private static final JPanel mainContainer;
+ private static final JPanel activityPanel;
private static CompositePage currentPage;
@@ -50,6 +57,8 @@ public abstract class MainWindow {
private static final Map<Class<? extends CompositePage>, CompositePage> pages = new ConcurrentHashMap<>();
+ private static final List<ActivityPanel> activities = new ArrayList<>();
+
private static final String THRIFT_CONNECTION_ERROR = "Lost connection to the masterserver. Do you want to retry?";
/**
@@ -84,13 +93,24 @@ public abstract class MainWindow {
}
static {
- JFrame ret = Gui.syncExec(new GuiCallable<JFrame>() {
+ mainWindow = Gui.syncExec(new GuiCallable<JFrame>() {
@Override
public JFrame run() {
return new JFrame("bwLehrstuhl");
}
});
- mainWindow = ret;
+ mainContainer = Gui.syncExec(new GuiCallable<JPanel>() {
+ @Override
+ public JPanel run() {
+ return new JPanel();
+ }
+ });
+ activityPanel = Gui.syncExec(new GuiCallable<JPanel>() {
+ @Override
+ public JPanel run() {
+ return new JPanel();
+ }
+ });
}
/**
@@ -177,6 +197,8 @@ public abstract class MainWindow {
win.setPreferredSize(win.getMinimumSize());
mainWindow.getContentPane().add(win, BorderLayout.PAGE_START);
}
+ activityPanel.setLayout(new BoxLayout(activityPanel, BoxLayout.PAGE_AXIS));
+ mainWindow.getContentPane().add(activityPanel, BorderLayout.PAGE_END);
// center the window on the primary monitor
mainWindow.getContentPane().add(mainContainer, BorderLayout.CENTER);
@@ -197,6 +219,11 @@ public abstract class MainWindow {
// Show main menu by default
showPage(MainMenuWindow.class);
+
+ UploadWizardState test = new UploadWizardState();
+ test.name = "TEST TEST";
+ test.diskFile = new File("/bla/blu/blubb.blsdfg.vmdk");
+ addUpload(test);
}
/**
@@ -204,9 +231,16 @@ public abstract class MainWindow {
* confirmation.
*/
protected static void askApplicationQuit() {
- // TODO: Only ask if an upload or download is running,, wizard is open etc..
- if (Gui.showMessageBox(mainWindow, "Are you sure you want to quit?", MessageType.QUESTION_YESNO,
- null, null)) {
+ boolean open = false;
+ for (ActivityPanel activity : activities) {
+ if (activity.wantConfirmQuit()) {
+ open = true;
+ break;
+ }
+ }
+ if (!open
+ || Gui.showMessageBox(mainWindow, "Are you sure you want to quit?",
+ MessageType.QUESTION_YESNO, null, null)) {
Gui.exit(0);
}
isQuitQuestionOpen = false;
@@ -226,6 +260,11 @@ public abstract class MainWindow {
window.setVisible(false);
}
+ public static void addUpload(UploadWizardState state) {
+ activities.add(new UploadPanel(activityPanel, state));
+ activityPanel.validate();
+ }
+
private static void createMenu() {
// the File menu button
JMenuBar menuBar = new JMenuBar();
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/ActivityPanel.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/ActivityPanel.java
new file mode 100644
index 00000000..eb651fef
--- /dev/null
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/ActivityPanel.java
@@ -0,0 +1,23 @@
+package org.openslx.dozmod.gui.activity;
+
+import javax.swing.JPanel;
+
+public abstract class ActivityPanel extends JPanel {
+
+ private final JPanel container;
+
+ public ActivityPanel(JPanel container) {
+ this.container = container;
+ container.add(this);
+ }
+
+ /**
+ * If this activity wants to prevent the user from closing the application,
+ * it should return true. This makes the application ask the user to confirm
+ * quitting.
+ *
+ * @return true to ask the user for confirmation
+ */
+ public abstract boolean wantConfirmQuit();
+
+}
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
new file mode 100644
index 00000000..430f6ae6
--- /dev/null
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/UploadPanel.java
@@ -0,0 +1,70 @@
+package org.openslx.dozmod.gui.activity;
+
+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.openslx.dozmod.gui.control.BlockProgressBar;
+import org.openslx.dozmod.state.UploadWizardState;
+
+@SuppressWarnings("serial")
+public class UploadPanel extends ActivityPanel {
+
+ private final JLabel lblStatus;
+
+ private final BlockProgressBar progress;
+
+ private final UploadWizardState state;
+
+ public UploadPanel(JPanel container, UploadWizardState state) {
+ super(container);
+ 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));
+ JButton button = new JButton("Knopf");
+ button.addActionListener(new ButtonAction());
+ header.add(button);
+ 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);
+ }
+
+ @Override
+ public boolean wantConfirmQuit() {
+ return false;
+ }
+
+ private class ButtonAction implements ActionListener {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ }
+ }
+
+}