diff options
author | Simon Rettberg | 2015-08-11 17:05:42 +0200 |
---|---|---|
committer | Simon Rettberg | 2015-08-11 17:05:42 +0200 |
commit | 6168a3915d41c678062a6a3d9f351e4dd6a769c6 (patch) | |
tree | 220e995bbc1a89aae272c79215653e479d23d905 /dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java | |
parent | [client] Remove unused imports (diff) | |
download | tutor-module-6168a3915d41c678062a6a3d9f351e4dd6a769c6.tar.gz tutor-module-6168a3915d41c678062a6a3d9f351e4dd6a769c6.tar.xz tutor-module-6168a3915d41c678062a6a3d9f351e4dd6a769c6.zip |
[client] Fix/finish download feature (no visual feedback yet)
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java')
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java | 74 |
1 files changed, 49 insertions, 25 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java index c5af467c..2c3af7ce 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java @@ -28,6 +28,7 @@ import org.openslx.bwlp.thrift.iface.ImageVersionDetails; import org.openslx.bwlp.thrift.iface.TAuthorizationException; import org.openslx.bwlp.thrift.iface.TNotFoundException; import org.openslx.bwlp.thrift.iface.TransferInformation; +import org.openslx.dozmod.Config; import org.openslx.dozmod.filetransfer.DownloadTask; import org.openslx.dozmod.gui.Gui; import org.openslx.dozmod.gui.MainWindow; @@ -116,11 +117,14 @@ public class ImageListWindow extends ImageListWindowLayout { public void mouseClicked(MouseEvent e) { if (SwingUtilities.isLeftMouseButton(e) && e.getClickCount() == 2) { final ImageSummaryRead image = getSelectedImage(); - if (image == null) return; - ImageDetailsWindow.open((JFrame)SwingUtilities.getWindowAncestor(me), image.getImageBaseId()); + if (image == null) + return; + ImageDetailsWindow.open((JFrame) SwingUtilities.getWindowAncestor(me), + image.getImageBaseId()); } processClick(e); } + @Override public void mousePressed(MouseEvent e) { processClick(e); @@ -155,7 +159,10 @@ public class ImageListWindow extends ImageListWindowLayout { downloadButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - performImageDownload(imageTable.getSelectedItem().latestVersionId); + ImageSummaryRead item = imageTable.getSelectedItem(); + if (item == null) + return; + performImageDownload(item.latestVersionId); } }); @@ -164,18 +171,23 @@ public class ImageListWindow extends ImageListWindowLayout { @Override public void actionPerformed(ActionEvent ae) { final ImageSummaryRead image = getSelectedImage(); - if (image == null) return; + if (image == null) + return; // check if we have a version if (image.isSetLatestVersionId()) { // try to actually delete this version of the image try { - ThriftManager.getSatClient().deleteImageVersion(Session.getSatelliteToken(), image.getLatestVersionId()); - LOGGER.info("Deleted version '" + image.getLatestVersionId() + "' of image '" + image.getImageBaseId() + "'."); + ThriftManager.getSatClient().deleteImageVersion(Session.getSatelliteToken(), + image.getLatestVersionId()); + LOGGER.info("Deleted version '" + image.getLatestVersionId() + "' of image '" + + image.getImageBaseId() + "'."); refreshList(true); } catch (TAuthorizationException e) { - Gui.showMessageBox(me, "Sie sind nicht autorisiert dieses Image zu löschen!", MessageType.ERROR, LOGGER, e); + Gui.showMessageBox(me, "Sie sind nicht autorisiert dieses Image zu löschen!", + MessageType.ERROR, LOGGER, e); } catch (TNotFoundException e) { - Gui.showMessageBox(me, "Diese Image existiert nicht auf dem Satelliten!", MessageType.ERROR, LOGGER, e); + Gui.showMessageBox(me, "Diese Image existiert nicht auf dem Satelliten!", + MessageType.ERROR, LOGGER, e); } catch (TException e) { Gui.showMessageBox(me, "Interner Fehler! Siehe Logs.", MessageType.ERROR, LOGGER, e); } @@ -186,11 +198,11 @@ public class ImageListWindow extends ImageListWindowLayout { }); newLectureButton.addActionListener(new ActionListener() { - + @Override public void actionPerformed(ActionEvent e) { startLectureWizard(); - + } }); // return to mainMenu @@ -206,17 +218,19 @@ public class ImageListWindow extends ImageListWindowLayout { private void startLectureWizard() { // determine latest version of the selected image final ImageSummaryRead image = getSelectedImage(); - if (image == null) return; + if (image == null) + return; ImageDetailsRead idr; try { - idr = ThriftManager.getSatClient().getImageDetails(Session.getSatelliteToken(), image.getImageBaseId()); + idr = ThriftManager.getSatClient().getImageDetails(Session.getSatelliteToken(), + image.getImageBaseId()); } catch (Exception e) { LOGGER.debug("Failed to get image details read from image base id: ", e); return; } - + Iterator<ImageVersionDetails> it = idr.getVersions().iterator(); - ImageVersionDetails latest = it.next(); + ImageVersionDetails latest = it.next(); while (it.hasNext()) { ImageVersionDetails current = it.next(); if (current.getCreateTime() > latest.getCreateTime()) @@ -224,6 +238,7 @@ public class ImageListWindow extends ImageListWindowLayout { } new LectureWizard(SwingUtilities.getWindowAncestor(this), latest).setVisible(true); } + private void refreshList(final boolean forceRefresh) { QuickTimer.scheduleOnce(new Task() { @Override @@ -260,6 +275,11 @@ public class ImageListWindow extends ImageListWindowLayout { } private void performImageDownload(String versionId) { + if (versionId == null) { + Gui.showMessageBox(this, "Das ausgewählte Image hat keine gültige Version", MessageType.ERROR, + null, null); + return; + } FileChooser fc = new FileChooser(false); int action = fc.showOpenDialog(me); File file = fc.getSelectedFile(); @@ -268,30 +288,34 @@ public class ImageListWindow extends ImageListWindowLayout { TransferInformation transInf = null; try { transInf = ThriftManager.getSatClient().requestDownload(Session.getSatelliteToken(), versionId); - } catch ( TException e) { + } catch (TException e) { LOGGER.error("Failed to get transfer information: ", e); return; } - if (transInf == null) + if (transInf == null) return; - // TODO fix filename/path and consider multiplatform try { - DownloadTask dlTask = new DownloadTask(Session.getSatelliteAddress(), transInf.getPlainPort(), transInf.getToken(), new File(file.getAbsolutePath() + "/HanneloreKraft"), imageTable.getSelectedItem().getFileSize(), null); + file.getAbsoluteFile().mkdirs(); + DownloadTask dlTask = new DownloadTask(Session.getSatelliteAddress(), transInf.getPlainPort(), + transInf.getToken(), new File(file.getAbsolutePath(), "Hans"), + imageTable.getSelectedItem().getFileSize(), null); + new Thread(dlTask).start(); + Config.setDownloadPath(file.getAbsolutePath()); } catch (FileNotFoundException e) { LOGGER.error("Got transfer information but failed to download: ", e); return; } } - private void applyFilterTable(){ + private void applyFilterTable() { try { // List for filters - List<RowFilter<Object,Object>> filters = new ArrayList<RowFilter<Object,Object>>(3); + List<RowFilter<Object, Object>> filters = new ArrayList<RowFilter<Object, Object>>(3); // string for text in filter text field String filterField = searchTextField.getText(); - filters.add(RowFilter.regexFilter("(?i)"+filterField, 0, 1, 2)); + filters.add(RowFilter.regexFilter("(?i)" + filterField, 0, 1, 2)); // filter for user (only show own) switch (showOwned.getSelectedIndex()) { case 0: @@ -300,22 +324,22 @@ public class ImageListWindow extends ImageListWindowLayout { case 1: // filter for owner String userFilter = FormatHelper.userName(UserCache.find(Session.getUserId())); - filters.add(RowFilter.regexFilter("(?i)"+userFilter, 2)); + filters.add(RowFilter.regexFilter("(?i)" + userFilter, 2)); break; case 2: // filter for editable RowFilter<Object, Object> filter = new RowFilter<Object, Object>() { public boolean include(Entry entry) { - return imageTable.getModelRow((Integer)entry.getIdentifier()).userPermissions.edit; + return imageTable.getModelRow((Integer) entry.getIdentifier()).userPermissions.edit; } }; filters.add(filter); break; default: break; - } + } // for using multiple filters - RowFilter<Object,Object> andFilters = RowFilter.andFilter(filters); + RowFilter<Object, Object> andFilters = RowFilter.andFilter(filters); imageTable.getRowSorter().setRowFilter(andFilters); searchTextField.setForeground(UIManager.getColor("TextField.foreground")); |