summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImagePublishedWindow.java
diff options
context:
space:
mode:
authorJonathan Bauer2016-04-27 17:24:15 +0200
committerJonathan Bauer2016-04-27 17:24:15 +0200
commita40ddb0a580348d68ff0c515275ffa252b686c1e (patch)
treee2436a05c935fd7b6c408e4cafb5be5dce6e16ce /dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImagePublishedWindow.java
parent[server] Fix upload handling if image already exists (diff)
downloadtutor-module-a40ddb0a580348d68ff0c515275ffa252b686c1e.tar.gz
tutor-module-a40ddb0a580348d68ff0c515275ffa252b686c1e.tar.xz
tutor-module-a40ddb0a580348d68ff0c515275ffa252b686c1e.zip
[client] first working draft for published images stuff
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImagePublishedWindow.java')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImagePublishedWindow.java205
1 files changed, 205 insertions, 0 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImagePublishedWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImagePublishedWindow.java
new file mode 100644
index 00000000..056b1a4d
--- /dev/null
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImagePublishedWindow.java
@@ -0,0 +1,205 @@
+package org.openslx.dozmod.gui.window;
+
+import java.awt.Frame;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.util.List;
+
+import javax.swing.JFrame;
+import javax.swing.SwingUtilities;
+
+import org.apache.log4j.Logger;
+import org.apache.thrift.TException;
+import org.openslx.bwlp.thrift.iface.ImageSummaryRead;
+import org.openslx.dozmod.gui.Gui;
+import org.openslx.dozmod.gui.MainWindow;
+import org.openslx.dozmod.gui.helper.UiFeedback;
+import org.openslx.dozmod.gui.window.layout.ImagePublishedWindowLayout;
+import org.openslx.dozmod.thrift.ImagePublishedDetailsActions;
+import org.openslx.dozmod.thrift.Session;
+import org.openslx.dozmod.thrift.ThriftActions;
+import org.openslx.dozmod.thrift.ThriftActions.DownloadCallback;
+import org.openslx.dozmod.thrift.ThriftError;
+import org.openslx.dozmod.thrift.cache.ImagePublishedCache;
+import org.openslx.thrifthelper.ThriftManager;
+import org.openslx.util.QuickTimer;
+import org.openslx.util.QuickTimer.Task;
+
+public class ImagePublishedWindow extends ImagePublishedWindowLayout implements
+ UiFeedback, DownloadCallback {
+
+ private final static Logger LOGGER = Logger
+ .getLogger(ImagePublishedWindow.class);
+ private final ImagePublishedWindow me = this;
+
+ public ImagePublishedWindow(Frame modalParent) {
+ super(modalParent);
+ // Hook when user presses X (top right)
+ setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
+ addWindowListener(new WindowAdapter() {
+ @Override
+ public void windowClosing(WindowEvent e) {
+ dispose();
+ }
+ });
+ btnClose.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ dispose();
+ }
+ });
+ btnSatDownload.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ ImageSummaryRead item = imagePublishedTable.getSelectedItem();
+ if (item == null)
+ return;
+ String transferToken = null;
+ try {
+ transferToken = ThriftManager.getSatClient()
+ .requestImageReplication(
+ Session.getSatelliteToken(),
+ item.latestVersionId);
+ } catch (TException ex) {
+ ThriftError.showMessage(me, LOGGER, ex,
+ "Could not start download");
+ }
+ MainWindow.addPassiveTransfer(transferToken, item.imageName,
+ false);
+ }
+ });
+ btnDownload.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ final ImageSummaryRead item = imagePublishedTable
+ .getSelectedItem();
+ if (item == null)
+ return;
+ btnDownload.setEnabled(false);
+ ThriftActions.initDownload(
+ (JFrame) SwingUtilities.getWindowAncestor(me),
+ item.latestVersionId, item.imageName, item.virtId,
+ item.osId, item.fileSize, null);
+ }
+ });
+
+ imagePublishedTable.addMouseListener(new MouseAdapter() {
+ @Override
+ public void mouseClicked(MouseEvent e) {
+ if (SwingUtilities.isLeftMouseButton(e)
+ && e.getClickCount() == 2) {
+ ImageSummaryRead item = imagePublishedTable
+ .getSelectedItem();
+ if (item == null || item.getImageBaseId() == null)
+ return;
+ ImageDetailsWindow.open(
+ (JFrame) SwingUtilities.getWindowAncestor(me),
+ item.getImageBaseId(), null,
+ new ImagePublishedDetailsActions());
+ }
+ processClick(e);
+ }
+
+ @Override
+ public void mousePressed(MouseEvent e) {
+ processClick(e);
+ }
+
+ @Override
+ public void mouseReleased(MouseEvent e) {
+ processClick(e);
+ }
+
+ private void processClick(MouseEvent e) {
+ // TODO popup menu?
+ }
+ });
+
+ // init data
+ refreshList(true, 0);
+ }
+ /**
+ * Callback when download initialized
+ *
+ * @param success true if downloading, false otherwise
+ */
+ @Override
+ public void downloadInitialized(boolean success) {
+ if (!success) {
+ Gui.asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ btnDownload.setEnabled(true);
+ }
+ });
+ }
+ }
+ /**
+ * Refreshes the image list in the table
+ *
+ * @param forceRefresh
+ * true to force a refresh, false to use the cached list
+ */
+ public void refreshList(final boolean forceRefresh, int delay) {
+ QuickTimer.scheduleOnce(new Task() {
+ @Override
+ public void fire() {
+ final List<ImageSummaryRead> imagePublishedList = ImagePublishedCache
+ .get(forceRefresh);
+ if (imagePublishedList == null)
+ return;
+ Gui.asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ imagePublishedTable.setData(imagePublishedList, true);
+ }
+ });
+ }
+ }, delay);
+ }
+
+ /**
+ * Opens a new ImageDetailsWindow showing the details of the image with ID =
+ * imageBaseId
+ *
+ * @param modalParent
+ * parent of this window
+ * @param imageBaseId
+ * id of the image to set the details of
+ */
+ public static void open(Frame modalParent) {
+ ImagePublishedWindow win = new ImagePublishedWindow(modalParent);
+ win.setVisible(true);
+ }
+
+ /* *******************************************************************************
+ *
+ * Dialog class overrides
+ *
+ * **************************************************************************
+ * *****
+ */
+ @SuppressWarnings("deprecation")
+ @Override
+ public void show() {
+ if (!isVisible()) {
+ pack();
+ MainWindow.centerShell(this);
+ }
+ super.show();
+ }
+
+ @Override
+ public boolean wantConfirmQuit() {
+ return false;
+ }
+
+ @Override
+ public void escapePressed() {
+ dispose();
+ }
+} \ No newline at end of file