summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod
diff options
context:
space:
mode:
authorStephan Schwaer2015-08-04 17:50:12 +0200
committerStephan Schwaer2015-08-04 17:50:12 +0200
commit9104bd3b9241adad927275ede8c35ff636db9d4f (patch)
tree3acd7a64654220b7321afded0fb0833b38ec65d3 /dozentenmodul/src/main/java/org/openslx/dozmod
parent[client] Fix TransferTask initiating a huge amount of connections (diff)
downloadtutor-module-9104bd3b9241adad927275ede8c35ff636db9d4f.tar.gz
tutor-module-9104bd3b9241adad927275ede8c35ff636db9d4f.tar.xz
tutor-module-9104bd3b9241adad927275ede8c35ff636db9d4f.zip
[client] Added version table to image details, improved lecture details, added ImageVersionTable and LecturePerms classes.
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ImageVersionTable.java36
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java6
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java25
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageDetailsWindowLayout.java75
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/LectureDetailsWindowLayout.java62
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/permissions/ImagePerms.java3
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/permissions/LecturePerms.java18
7 files changed, 159 insertions, 66 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ImageVersionTable.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ImageVersionTable.java
new file mode 100644
index 00000000..f2e98ca8
--- /dev/null
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ImageVersionTable.java
@@ -0,0 +1,36 @@
+package org.openslx.dozmod.gui.control.table;
+
+import org.apache.log4j.Logger;
+import org.openslx.bwlp.thrift.iface.ImageVersionDetails;
+import org.openslx.dozmod.thrift.UserCache;
+import org.openslx.dozmod.util.FormatHelper;
+
+@SuppressWarnings("serial")
+public class ImageVersionTable extends ListTable<ImageVersionDetails> {
+
+ private final static Logger LOGGER = Logger.getLogger(ImageVersionTable.class);
+
+ private static String[] columnNames = { "Datum", "Uploader", "Valid", "Größe", "Id" };
+
+ private static Class<?>[] columnClasses = { String.class, String.class, Boolean.class, String.class, String.class};
+
+ public ImageVersionTable() {
+ super(columnNames, columnClasses);
+ }
+
+ @Override
+ protected Object getValueAtInternal(int rowIndex, int columnIndex) {
+ ImageVersionDetails row = getModelRow(rowIndex);
+ if (columnIndex == 0)
+ return FormatHelper.longDate(row.getCreateTime());
+ if (columnIndex == 1)
+ return FormatHelper.userName(UserCache.find(row.getUploaderId()));;
+ if (columnIndex == 2)
+ return row.isValid;
+ if (columnIndex == 3)
+ return FormatHelper.bytes(row.getFileSize(), false);
+ if (columnIndex == 4)
+ return row.getVersionId();
+ throw new IndexOutOfBoundsException();
+ }
+}
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java
index babd4e41..db4f73e0 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java
@@ -49,7 +49,6 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout {
addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
- LOGGER.debug("he");
if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
dispose();
}
@@ -137,10 +136,14 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout {
}
txtTags.setText(tagsString);
btnIsTemplate.setSelected(image.isTemplate);
+
+ versionTable.setData(image.getVersions(), true);
+
makeEditable(ImagePerms.canEdit(image));
pack();
MainWindow.centerShell(this);
setVisible(true);
+// refreshList();
}
/**
@@ -170,4 +173,5 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout {
ImageDetailsWindow win = new ImageDetailsWindow(modalParent);
win.setImage(imageBaseId);
}
+
}
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 04a20359..7d1b03c9 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
@@ -104,10 +104,18 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout {
txtId.setText(lecture.getLectureId());
- btnIsEnabled.setSelected(lecture.isEnabled);
btnIsExam.setSelected(lecture.isExam);
- // TODO grey out non editable components
- //makeEditable(ImagePerms.canEdit(lecture));
+ btnAutoUpdate.setSelected(lecture.autoUpdate);
+
+ lblUseCount.setText(Integer.toString(lecture.useCount));
+
+ // TODO fill combo with versions
+ // List<ImageVersionDetails> versions = lecture.image.
+ //cboVersions.setModel(new DefaultComboBoxModel<Organization>(orgs.toArray(new Organization[orgs.size()])));
+
+
+ // TODO grey out non editable components, lecture image has no permissions yet
+ //makeEditable(LecturePerms.canEdit(lecture));
pack();
MainWindow.centerShell(this);
setVisible(true);
@@ -122,6 +130,17 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout {
txtTitle.setEnabled(editable);
txtDescription.setEnabled(editable);
txtId.setEnabled(editable);
+ txtDescription.setEnabled(editable);
+
+ // lblCreateTime.setText(FormatHelper.longDate(lecture.getCreateTime()));
+ // lblUpdateTime.setText(FormatHelper.longDate(lecture.getUpdateTime()));
+ // lblStartTime.setText(FormatHelper.longDate(lecture.getStartTime()));
+ // lblEndTime.setText(FormatHelper.longDate(lecture.getEndTime()));
+ //
+ btnLinkImage.setEnabled(editable);
+ btnIsExam.setEnabled(editable);
+ btnAutoUpdate.setEnabled(editable);
+ cboVersions.setEnabled(editable);
}
/**
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageDetailsWindowLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageDetailsWindowLayout.java
index 0e4ed935..28e77a72 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageDetailsWindowLayout.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageDetailsWindowLayout.java
@@ -2,6 +2,7 @@ package org.openslx.dozmod.gui.window.layout;
import java.awt.BorderLayout;
import java.awt.Component;
+import java.awt.Dimension;
import java.awt.Font;
import java.awt.Frame;
import java.awt.GridBagLayout;
@@ -25,6 +26,7 @@ import javax.swing.JTextField;
import org.openslx.bwlp.thrift.iface.OperatingSystem;
import org.openslx.bwlp.thrift.iface.ShareMode;
import org.openslx.dozmod.gui.control.PersonLabel;
+import org.openslx.dozmod.gui.control.table.ImageVersionTable;
import org.openslx.dozmod.gui.helper.GridPos;
@SuppressWarnings("serial")
@@ -43,40 +45,41 @@ public abstract class ImageDetailsWindowLayout extends JDialog {
protected final JTextField txtTags;
protected final JCheckBox btnIsTemplate;
protected final JComboBox<ShareMode> cboShareMode;
-
+
protected final JTextField txtId;
protected final JTextField txtVersion;
-
+
protected final JButton btnSaveChanges;
protected final JButton btnClose;
+ protected final ImageVersionTable versionTable;
+
// TODO: Permissions, ...
public ImageDetailsWindowLayout(Frame modalParent) {
- super(modalParent, "der mit dem blub", ModalityType.APPLICATION_MODAL);
- setResizable(true);
- setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
- setLayout(new BorderLayout());
-
- // helper for row index
- int row = 0;
-
- // use panel to put every info related widget in it
- // then we will set the panel in BorderLayout.CENTER
- JPanel infoPanel = new JPanel();
- infoPanel.setLayout(new GridBagLayout());
- infoPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
- // -- name --
+ super(modalParent, "Platzhalter wärend das Fenster sich noch nicht gefüllt hat", ModalityType.APPLICATION_MODAL);
+ setResizable(true);
+ setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
+ setLayout(new BorderLayout());
+
+ // helper for row index
+ int row = 0;
+
+ // use panel to put every info related widget in it
+ // then we will set the panel in BorderLayout.CENTER
+ JPanel infoPanel = new JPanel();
+ infoPanel.setLayout(new GridBagLayout());
+ infoPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
+ // -- name --
txtTitle = new JLabel();
txtTitle.setFont(txtTitle.getFont().deriveFont(Font.BOLD, txtTitle.getFont().getSize2D() * 2));
infoPanel.add(txtTitle, GridPos.get(0, row++, 2, 1, true, false));
- System.out.println(row);
-
+
// description
txtDescription = new JTextArea();
infoPanel.add(new JLabel("Beschreibung"), GridPos.get(0, row, false, false));
infoPanel.add(new JScrollPane(txtDescription), GridPos.get(1, row++, true, false));
-
+
// owner
lblOwner = new PersonLabel();
infoPanel.add(new JLabel("Besitzer"), GridPos.get(0, row, false, false));
@@ -125,25 +128,37 @@ public abstract class ImageDetailsWindowLayout extends JDialog {
btnIsTemplate = new JCheckBox();
infoPanel.add(new JLabel("Vorlage"), GridPos.get(0, row, false, false));
infoPanel.add(btnIsTemplate, GridPos.get(1, row++, true, false));
-
+
txtVersion = new JTextField();
infoPanel.add(new JLabel("Version"), GridPos.get(0, row, false, false));
infoPanel.add(txtVersion, GridPos.get(1, row++, true, false));
-
+
txtId = new JTextField();
infoPanel.add(new JLabel("ID"), GridPos.get(0, row, false, false));
infoPanel.add(txtId, GridPos.get(1, row++, true, false));
-
+
+ infoPanel.setPreferredSize(new Dimension(500, 400));
+
// finally add the infoPanel itself to the main view
add(infoPanel, BorderLayout.CENTER);
// button panel on the bottom
- JPanel buttonPanel = new JPanel();
- buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS));
- btnSaveChanges = new JButton("Speichern");
- btnClose = new JButton("Schließen");
- buttonPanel.add(btnSaveChanges);
- buttonPanel.add(Box.createGlue());
- buttonPanel.add(btnClose);
- add(buttonPanel, BorderLayout.SOUTH);
+ JPanel buttonPanel = new JPanel();
+ buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS));
+ btnSaveChanges = new JButton("Speichern");
+ btnClose = new JButton("Schließen");
+ buttonPanel.add(btnSaveChanges);
+ buttonPanel.add(Box.createGlue());
+ buttonPanel.add(btnClose);
+ add(buttonPanel, BorderLayout.SOUTH);
+
+ JPanel versionTablePanel = new JPanel();
+ versionTablePanel.setLayout(new BorderLayout());
+ JLabel lblVersion = new JLabel("Image Versionen");
+ lblVersion.setFont(lblVersion.getFont().deriveFont(Font.BOLD));
+ versionTablePanel.add(lblVersion, BorderLayout.NORTH);
+ versionTable = new ImageVersionTable();
+ versionTablePanel.setPreferredSize(new Dimension(400, 200));
+ versionTablePanel.add(new JScrollPane(versionTable), BorderLayout.CENTER);
+ add(versionTablePanel, BorderLayout.EAST);
}
}
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/LectureDetailsWindowLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/LectureDetailsWindowLayout.java
index 924dc7bd..87a14ff3 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/LectureDetailsWindowLayout.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/LectureDetailsWindowLayout.java
@@ -10,6 +10,7 @@ import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
@@ -18,6 +19,7 @@ import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
+import org.openslx.bwlp.thrift.iface.ImageVersionDetails;
import org.openslx.dozmod.gui.control.PersonLabel;
import org.openslx.dozmod.gui.helper.GridPos;
@@ -26,26 +28,19 @@ public abstract class LectureDetailsWindowLayout extends JDialog {
protected final JLabel txtTitle;
protected final JTextArea txtDescription;
-
- protected final JTextField txtImageName;
-
+ protected final JLabel txtImageName;
+ protected final JButton btnLinkImage;
protected final PersonLabel lblOwner;
protected final JLabel lblCreateTime;
protected final PersonLabel lblUpdater;
protected final JLabel lblUpdateTime;
-
protected final JLabel lblStartTime;
protected final JLabel lblEndTime;
-
- protected final JCheckBox btnIsEnabled;
protected final JCheckBox btnAutoUpdate;
+ protected final JComboBox<ImageVersionDetails> cboVersions;
protected final JCheckBox btnIsExam;
-
-
protected final JTextField txtId;
-
protected final JLabel lblUseCount;
-
protected final JButton btnSaveChanges;
protected final JButton btnClose;
@@ -70,27 +65,40 @@ public abstract class LectureDetailsWindowLayout extends JDialog {
txtTitle = new JLabel();
txtTitle.setFont(txtTitle.getFont().deriveFont(Font.BOLD, txtTitle.getFont().getSize2D() * 2));
infoPanel.add(txtTitle, GridPos.get(0, row++, 2, 1, true, false));
-
// description
txtDescription = new JTextArea();
infoPanel.add(new JLabel("Beschreibung"), GridPos.get(0, row, false, false));
infoPanel.add(new JScrollPane(txtDescription), GridPos.get(1, row++, true, false));
-
- // linked image name
- txtImageName = new JTextField();
- infoPanel.add(new JLabel("Imagename"), GridPos.get(0, row, false, false));
- infoPanel.add(txtImageName, GridPos.get(1, row++, true, false));
-
+ // linked image
+ JPanel pnlLinkeImage = new JPanel();
+ // name
+ txtImageName = new JLabel();
+ infoPanel.add(new JLabel("Imagename"), GridPos.get(0, row, false, false));
+ pnlLinkeImage.add(txtImageName);
+ // link button for image
+ btnLinkImage = new JButton();
+ btnLinkImage.setText("Link Image");
+ pnlLinkeImage.add(btnLinkImage);
+ infoPanel.add(pnlLinkeImage, GridPos.get(1, row++, false, false));
+ // image version handling
+ // auto update
+ btnAutoUpdate = new JCheckBox();
+ infoPanel.add(new JLabel("Image Version"), GridPos.get(0, row, false, false));
+ JPanel versionPanel = new JPanel();
+ versionPanel.add(new JLabel("Auto Update"));
+ versionPanel.add(btnAutoUpdate);
+ // versions combo
+ cboVersions = new JComboBox<>();
+ versionPanel.add(cboVersions);
+ infoPanel.add(versionPanel, GridPos.get(1, row++, false, false));
// start time of the lecture
lblStartTime = new JLabel();
infoPanel.add(new JLabel("Startzeit"), GridPos.get(0, row, false, false));
infoPanel.add(lblStartTime, GridPos.get(1, row++, true, false));
-
// end time of the lecture
lblEndTime = new JLabel();
infoPanel.add(new JLabel("Endzeit"), GridPos.get(0, row, false, false));
infoPanel.add(lblEndTime, GridPos.get(1, row++, true, false));
-
// owner
lblOwner = new PersonLabel();
infoPanel.add(new JLabel("Besitzer"), GridPos.get(0, row, false, false));
@@ -107,29 +115,19 @@ public abstract class LectureDetailsWindowLayout extends JDialog {
lblUpdateTime = new JLabel();
infoPanel.add(new JLabel("Änderungszeitpunkt"), GridPos.get(0, row, false, false));
infoPanel.add(lblUpdateTime, GridPos.get(1, row++, true, false));
- // enabled
- btnIsEnabled = new JCheckBox();
- infoPanel.add(new JLabel("Vorlage"), GridPos.get(0, row, false, false));
- infoPanel.add(btnIsEnabled, GridPos.get(1, row++, true, false));
// is exam
btnIsExam = new JCheckBox();
- infoPanel.add(new JLabel("Vorlage"), GridPos.get(0, row, false, false));
+ infoPanel.add(new JLabel("Klausur"), GridPos.get(0, row, false, false));
infoPanel.add(btnIsExam, GridPos.get(1, row++, true, false));
-
- // auto update
- btnAutoUpdate = new JCheckBox();
- infoPanel.add(new JLabel("Vorlage"), GridPos.get(0, row, false, false));
- infoPanel.add(btnAutoUpdate, GridPos.get(1, row++, true, false));
// id
txtId = new JTextField();
+ txtId.setEditable(false);
infoPanel.add(new JLabel("ID"), GridPos.get(0, row, false, false));
infoPanel.add(txtId, GridPos.get(1, row++, true, false));
// use count
lblUseCount = new JLabel();
- infoPanel.add(new JLabel("ID"), GridPos.get(0, row, false, false));
+ infoPanel.add(new JLabel("useCount"), GridPos.get(0, row, false, false));
infoPanel.add(lblUseCount, GridPos.get(1, row++, true, false));
-
-
// finally add the infoPanel itself to the main view
add(infoPanel, BorderLayout.CENTER);
// button panel on the bottom
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/permissions/ImagePerms.java b/dozentenmodul/src/main/java/org/openslx/dozmod/permissions/ImagePerms.java
index 5b9441ed..9633e13b 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/permissions/ImagePerms.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/permissions/ImagePerms.java
@@ -3,6 +3,9 @@ package org.openslx.dozmod.permissions;
import org.openslx.bwlp.thrift.iface.ImageDetailsRead;
import org.openslx.dozmod.thrift.Session;
+/**
+ * Class for checking, whether user can edit given image
+ */
public class ImagePerms {
public static boolean canEdit(ImageDetailsRead image){
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/permissions/LecturePerms.java b/dozentenmodul/src/main/java/org/openslx/dozmod/permissions/LecturePerms.java
new file mode 100644
index 00000000..5fa2f585
--- /dev/null
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/permissions/LecturePerms.java
@@ -0,0 +1,18 @@
+package org.openslx.dozmod.permissions;
+
+import org.openslx.bwlp.thrift.iface.LectureRead;
+import org.openslx.dozmod.thrift.Session;
+
+/**
+ * Class for checking, whether user can edit given lecture
+ */
+public class LecturePerms {
+ public static boolean canEdit(LectureRead lecture){
+ if(lecture.getOwnerId().equals(Session.getUserId()))
+ return true;
+ if(lecture.userPermissions !=null) {
+ return lecture.userPermissions.edit;
+ }
+ return lecture.defaultPermissions.edit;
+ }
+}