diff options
author | Jonathan Bauer | 2016-04-27 17:24:15 +0200 |
---|---|---|
committer | Jonathan Bauer | 2016-04-27 17:24:15 +0200 |
commit | a40ddb0a580348d68ff0c515275ffa252b686c1e (patch) | |
tree | e2436a05c935fd7b6c408e4cafb5be5dce6e16ce /dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImagePublishedWindow.java | |
parent | [server] Fix upload handling if image already exists (diff) | |
download | tutor-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.java | 205 |
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 |