summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java
diff options
context:
space:
mode:
authorSimon Rettberg2015-08-25 18:39:50 +0200
committerSimon Rettberg2015-08-25 18:39:50 +0200
commit6f1e999cd903fe319970e89ff2568b561f6d2d85 (patch)
tree1081d02e55639db01b6b927f5f034dae03930b6c /dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java
parent[client] Display memory usage (diff)
downloadtutor-module-6f1e999cd903fe319970e89ff2568b561f6d2d85.tar.gz
tutor-module-6f1e999cd903fe319970e89ff2568b561f6d2d85.tar.xz
tutor-module-6f1e999cd903fe319970e89ff2568b561f6d2d85.zip
[client] Mark invalid image versions in lecture details window
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java149
1 files changed, 83 insertions, 66 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java
index 3a7a63d8..f0ba8123 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java
@@ -12,6 +12,7 @@ import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -63,6 +64,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
public interface LectureUpdatedCallback {
public void updated(boolean success);
}
+
/**
* Callback to be called when changing lecture details on the server
*/
@@ -82,14 +84,14 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
* Image, that the lecture is linked to.
*/
private ImageDetailsRead image = null;
-
+
/**
* Whether the custom permission window has been used.
*/
private boolean permissionsChanged = false;
private Task dateChecker;
-
+
private boolean reactive = false;
/**
@@ -109,17 +111,17 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
dateChecker.cancel();
}
});
-
+
btnLinkImage.addActionListener(new ActionListener() {
-
+
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
-
+
}
});
/**
- * Button listeners
+ * Button listeners
*/
btnClose.addActionListener(new ActionListener() {
@Override
@@ -144,12 +146,12 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
public void actionPerformed(ActionEvent e) {
UserListWindow.open(JOptionPane.getFrameForComponent(btnChangeOwner),
new UserAddedCallback() {
- @Override
- public void userAdded(UserInfo user, UserListWindow window) {
- window.dispose();
- setLectureOwner(user);
- }
- }, "Besitzer festlegen");
+ @Override
+ public void userAdded(UserInfo user, UserListWindow window) {
+ window.dispose();
+ setLectureOwner(user);
+ }
+ }, "Besitzer festlegen");
}
});
btnPermissions.addActionListener(new ActionListener() {
@@ -157,8 +159,9 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
public void actionPerformed(ActionEvent arg0) {
LOGGER.info(permissionMap);
LOGGER.info(lecture.defaultPermissions);
- PermissionDefaultToCustomLink<LecturePermissions> pl = LectureCustomPermissionWindow.open(JOptionPane.getFrameForComponent(me), permissionMap, lecture.defaultPermissions);
- if (pl != null && pl.defaultPermissions != null && pl.customPermissions != null){
+ PermissionDefaultToCustomLink<LecturePermissions> pl = LectureCustomPermissionWindow.open(
+ JOptionPane.getFrameForComponent(me), permissionMap, lecture.defaultPermissions);
+ if (pl != null && pl.defaultPermissions != null && pl.customPermissions != null) {
lecture.defaultPermissions = pl.defaultPermissions;
permissionMap = pl.customPermissions;
permissionsChanged = true;
@@ -191,21 +194,26 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
* @param lectureId the id of the lecture to be displayed
*/
public void setLecture(final String lectureId) {
- ThriftActions.getLectureWithImageDetails(JOptionPane.getFrameForComponent(me), lectureId, new LectureMetaCallback() {
- @Override
- public void fetchedLectureDetails(LectureRead lectureDetails, ImageDetailsRead imageDetails) {
- synchronized (me) {
- lecture = lectureDetails;
- image = imageDetails;
- permissionMap = ThriftActions.getLecturePermissions(JOptionPane.getFrameForComponent(me), lecture.lectureId);
- }
- fill();
- }
- @Override
- public void fetchedLecturePermissions(Map<String, LecturePermissions> permissions) { return; }
- });
-
-
+ ThriftActions.getLectureWithImageDetails(JOptionPane.getFrameForComponent(me), lectureId,
+ new LectureMetaCallback() {
+ @Override
+ public void fetchedLectureDetails(LectureRead lectureDetails,
+ ImageDetailsRead imageDetails) {
+ synchronized (me) {
+ lecture = lectureDetails;
+ image = imageDetails;
+ permissionMap = ThriftActions.getLecturePermissions(
+ JOptionPane.getFrameForComponent(me), lecture.lectureId);
+ }
+ fill();
+ }
+
+ @Override
+ public void fetchedLecturePermissions(Map<String, LecturePermissions> permissions) {
+ return;
+ }
+ });
+
}
/**
@@ -236,6 +244,13 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
// version combo
List<ImageVersionDetails> versions = image.getVersions();
+ for (Iterator<ImageVersionDetails> it = image.getVersions().iterator(); it.hasNext();) {
+ ImageVersionDetails version = it.next();
+ if (!version.isValid && !lecture.imageVersionId.equals(version.versionId)) {
+ it.remove();
+ }
+ }
+
// sort versions by createtime
Collections.sort(versions, new Comparator<ImageVersionDetails>() {
public int compare(ImageVersionDetails o1, ImageVersionDetails o2) {
@@ -271,13 +286,13 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
* @param user UserInfo representation of the new owner
*/
private void setLectureOwner(final UserInfo user) {
- if (!ThriftActions.setLectureOwner(JOptionPane.getFrameForComponent(this),
- lecture.getLectureId(), user)) {
+ if (!ThriftActions.setLectureOwner(JOptionPane.getFrameForComponent(this), lecture.getLectureId(),
+ user)) {
return;
}
// success
- Gui.showMessageBox(me, "Besitzrechte übertragen an " + FormatHelper.userName(user),
- MessageType.INFO, null, null);
+ Gui.showMessageBox(me, "Besitzrechte übertragen an " + FormatHelper.userName(user), MessageType.INFO,
+ null, null);
makeEditable(false);
String lectureId = lecture.getLectureId();
synchronized (me) {
@@ -291,62 +306,57 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
* Triggers the download of the currently used image version of the lecture
*/
private void performImageDownload() {
- if (image == null){
- Gui.showMessageBox(this, "Image ungültig.", MessageType.ERROR,
- null, null);
+ if (image == null) {
+ Gui.showMessageBox(this, "Image ungültig.", MessageType.ERROR, null, null);
return;
}
btnDownloadImage.setEnabled(false);
long versionSize = 0;
for (ImageVersionDetails version : image.versions) {
- if(version.versionId.equals(lecture.imageVersionId)){
+ if (version.versionId.equals(lecture.imageVersionId)) {
versionSize = version.fileSize;
}
}
- if (versionSize == 0){
- Gui.showMessageBox(this, "Fehler bei der Abfrag der Größe des Images.", MessageType.ERROR,
- null, null);
+ if (versionSize == 0) {
+ Gui.showMessageBox(this, "Fehler bei der Abfrag der Größe des Images.", MessageType.ERROR, null,
+ null);
return;
}
ThriftActions.initDownload(JOptionPane.getFrameForComponent(this), lecture.imageVersionId,
image.imageName, image.virtId, versionSize, null);
}
+
/**
- * Push the changes of the image details to the satellite
+ * Push the changes of the image details to the satellite
*/
private void saveChanges() {
// date valid TODO sat max time
- if (!isPeriodValid(DateTimeHelper.getDateFrom(startDate, startTime), DateTimeHelper.getDateFrom(endDate, endTime), true)) {
+ if (!isPeriodValid(DateTimeHelper.getDateFrom(startDate, startTime),
+ DateTimeHelper.getDateFrom(endDate, endTime), true)) {
return;
}
// first build the ImageBaseWrite from the GUI fields
- final LectureWrite lectureWrite = new LectureWrite(
- txtTitle.getText(),
- txtDescription.getText(),
- lecture.getImageVersionId(),
- btnAutoUpdate.isSelected(),
- btnIsActive.isSelected(),
+ final LectureWrite lectureWrite = new LectureWrite(txtTitle.getText(), txtDescription.getText(),
+ lecture.getImageVersionId(), btnAutoUpdate.isSelected(), btnIsActive.isSelected(),
DateTimeHelper.getDateFrom(startDate, startTime).getTime() / 1000L,
- DateTimeHelper.getDateFrom(endDate, endTime).getTime() / 1000L,
- null,
- null,
- btnIsExam.isSelected(),
- btnHasInternetAccess.isSelected(),
- lecture.getDefaultPermissions());
+ DateTimeHelper.getDateFrom(endDate, endTime).getTime() / 1000L, null, null,
+ btnIsExam.isSelected(), btnHasInternetAccess.isSelected(), lecture.getDefaultPermissions());
// now trigger the actual action
btnSaveChanges.setEnabled(false);
try {
- ThriftManager.getSatClient().updateLecture(Session.getSatelliteToken(),
- lecture.getLectureId(), lectureWrite);
+ ThriftManager.getSatClient().updateLecture(Session.getSatelliteToken(), lecture.getLectureId(),
+ lectureWrite);
} catch (TException e) {
- ThriftError.showMessage(JOptionPane.getFrameForComponent(this), LOGGER, e, "Fehler beim Updaten der Veranstaltung");
+ ThriftError.showMessage(JOptionPane.getFrameForComponent(this), LOGGER, e,
+ "Fehler beim Updaten der Veranstaltung");
callback.updated(true);
return;
}
- if(permissionsChanged){
+ if (permissionsChanged) {
try {
- ThriftManager.getSatClient().writeLecturePermissions(Session.getSatelliteToken(), lecture.lectureId, permissionMap);
+ ThriftManager.getSatClient().writeLecturePermissions(Session.getSatelliteToken(),
+ lecture.lectureId, permissionMap);
permissionsChanged = false;
} catch (TException e) {
LOGGER.error("Fehler beim Übertragen der Berechtigungen: ", e);
@@ -359,7 +369,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
}
private void listenToChange() {
- if (reactive)
+ if (reactive)
return;
// final step, add listeners to react to change
final DocumentListener docListener = new DocumentListener() {
@@ -367,10 +377,12 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
public void removeUpdate(DocumentEvent e) {
changedUpdate(e);
}
+
@Override
public void insertUpdate(DocumentEvent e) {
changedUpdate(e);
}
+
@Override
public void changedUpdate(DocumentEvent e) {
reactToChange();
@@ -389,12 +401,12 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
}
};
cboVersions.addItemListener(comboItemListener);
-
+
// Listener to detect changes in checkboxes
final ActionListener checkBoxListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
- reactToChange();
+ reactToChange();
}
};
btnAutoUpdate.addActionListener(checkBoxListener);
@@ -412,6 +424,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
reactive = true;
}
+
private boolean isPeriodValid(final Date start, final Date end, boolean feedback) {
if (start == null || end == null)
return false;
@@ -425,7 +438,8 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
final Date now = new Date();
if (now.after(end)) {
if (feedback)
- Gui.showMessageBox(me, "Endzeit liegt in die Vergangenheit!", MessageType.ERROR, LOGGER, null);
+ Gui.showMessageBox(me, "Endzeit liegt in die Vergangenheit!", MessageType.ERROR, LOGGER,
+ null);
endDate.setForeground(Color.red);
} else {
endDate.setForeground(dateTimeTextColor);
@@ -434,6 +448,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
}
return false;
}
+
/**
* Checks whether the user changed any fields of the image details and
* enables the save button if so.
@@ -445,11 +460,12 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
if (currentVersion != null && !currentVersion.getVersionId().equals(lecture.getImageVersionId())) {
changed = true;
} else if ((DateTimeHelper.getDateFrom(startDate, startTime).getTime() / 1000L) != lecture.getStartTime()
- || (DateTimeHelper.getDateFrom(endDate, endTime).getTime() / 1000L) != lecture.getEndTime()) {
+ || (DateTimeHelper.getDateFrom(endDate, endTime).getTime() / 1000L) != lecture.getEndTime()) {
changed = true;
} else if (!txtTitle.getText().isEmpty() && !txtTitle.getText().equals(lecture.getLectureName())) {
changed = true;
- } else if (!txtDescription.getText().isEmpty() && !txtDescription.getText().equals(lecture.getDescription())) {
+ } else if (!txtDescription.getText().isEmpty()
+ && !txtDescription.getText().equals(lecture.getDescription())) {
changed = true;
} else if (btnAutoUpdate.isSelected() != lecture.autoUpdate) {
changed = true;
@@ -462,9 +478,10 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
} else if (permissionsChanged) {
changed = true;
}
-
+
btnSaveChanges.setEnabled(changed);
}
+
/**
* Enables/disables the editable fields based on 'editable'
*