diff options
author | Stephan Schwaer | 2015-08-04 17:50:12 +0200 |
---|---|---|
committer | Stephan Schwaer | 2015-08-04 17:50:12 +0200 |
commit | 9104bd3b9241adad927275ede8c35ff636db9d4f (patch) | |
tree | 3acd7a64654220b7321afded0fb0833b38ec65d3 /dozentenmodul/src/main/java/org/openslx/dozmod | |
parent | [client] Fix TransferTask initiating a huge amount of connections (diff) | |
download | tutor-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')
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; + } +} |