summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Bauer2015-08-04 14:32:52 +0200
committerJonathan Bauer2015-08-04 14:32:52 +0200
commita8f1de946dd128cd11f0e7e2311aca0d602f3a59 (patch)
tree5000fbe2ebc24c0a0af7f961eaac51fdced8ba91
parent[client] improved table boolean object support (for checkboxes) (diff)
downloadtutor-module-a8f1de946dd128cd11f0e7e2311aca0d602f3a59.tar.gz
tutor-module-a8f1de946dd128cd11f0e7e2311aca0d602f3a59.tar.xz
tutor-module-a8f1de946dd128cd11f0e7e2311aca0d602f3a59.zip
[client] image deletion with user feedback
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java49
1 files changed, 42 insertions, 7 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 410eb5c5..5ce4551a 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
@@ -6,21 +6,28 @@ import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.List;
-import java.util.regex.PatternSyntaxException;
import javax.swing.JFrame;
import javax.swing.RowFilter;
import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import org.apache.log4j.Logger;
+import org.apache.thrift.TException;
import org.openslx.bwlp.thrift.iface.ImageSummaryRead;
+import org.openslx.bwlp.thrift.iface.TAuthorizationException;
+import org.openslx.bwlp.thrift.iface.TInternalServerError;
+import org.openslx.bwlp.thrift.iface.TNotFoundException;
import org.openslx.dozmod.gui.Gui;
import org.openslx.dozmod.gui.MainWindow;
+import org.openslx.dozmod.gui.helper.MessageType;
import org.openslx.dozmod.gui.window.layout.ImageListWindowLayout;
import org.openslx.dozmod.gui.wizard.ImageWizard;
import org.openslx.dozmod.thrift.ImageCache;
+import org.openslx.dozmod.thrift.Session;
+import org.openslx.thrifthelper.ThriftManager;
import org.openslx.util.QuickTimer;
import org.openslx.util.QuickTimer.Task;
@@ -52,9 +59,10 @@ public class ImageListWindow extends ImageListWindowLayout {
// stuff
try {
imageTable.getRowSorter().setRowFilter(RowFilter.regexFilter("(?i)"+searchTextField.getText(), 0, 1, 2));
+ searchTextField.setForeground(UIManager.getColor("TextField.foreground"));
} catch (IllegalArgumentException ex) {
// TODO set background color of search field to something redish
- searchTextField.setBackground(Color.RED);
+ searchTextField.setForeground(Color.RED);
}
}
});
@@ -64,9 +72,8 @@ public class ImageListWindow extends ImageListWindowLayout {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
- ImageSummaryRead image = imageTable.getSelectedItem();
- if (image == null)
- return;
+ final ImageSummaryRead image = getSelectedImage();
+ if (image == null) return;
ImageDetailsWindow.open((JFrame)SwingUtilities.getWindowAncestor(me), image.getImageBaseId());
}
}
@@ -89,8 +96,26 @@ public class ImageListWindow extends ImageListWindowLayout {
// delete lecture
deleteButton.addActionListener(new ActionListener() {
@Override
- public void actionPerformed(ActionEvent e) {
- // TODO delete the image
+ public void actionPerformed(ActionEvent ae) {
+ final ImageSummaryRead image = getSelectedImage();
+ if (image == null) return;
+ // check if we have a version
+ if (image.isSetCurrentVersionId()) {
+ // try to actually delete this version of the image
+ try {
+ ThriftManager.getSatClient().deleteImageVersion(Session.getSatelliteToken(), image.getCurrentVersionId());
+ LOGGER.info("Deleted version '" + image.getCurrentVersionId() + "' 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);
+ } catch (TNotFoundException 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);
+ }
+ } else {
+ Gui.showMessageBox(me, "Keine Version für diese Image!", MessageType.ERROR, LOGGER, null);
+ }
}
});
@@ -119,6 +144,16 @@ public class ImageListWindow extends ImageListWindowLayout {
});
}
+ private final ImageSummaryRead getSelectedImage() {
+ final ImageSummaryRead image = imageTable.getSelectedItem();
+ if (image == null) {
+ Gui.showMessageBox(this, "Kein Image ausgewählt!", MessageType.ERROR, LOGGER, null);
+ return null;
+ } else {
+ return image;
+ }
+ }
+
@Override
public boolean requestHide() {
return true;