diff options
| author | Stephan Schwaer | 2015-08-06 15:52:23 +0200 |
|---|---|---|
| committer | Stephan Schwaer | 2015-08-06 15:52:23 +0200 |
| commit | 19f4b94479d2f39a5f48ddb69a955e611082a8aa (patch) | |
| tree | 43247e1392e08ec7ed0b5ecaf1723cf520bb01a3 | |
| parent | [client] first buggy popup menu (diff) | |
| download | tutor-module-19f4b94479d2f39a5f48ddb69a955e611082a8aa.tar.gz tutor-module-19f4b94479d2f39a5f48ddb69a955e611082a8aa.tar.xz tutor-module-19f4b94479d2f39a5f48ddb69a955e611082a8aa.zip | |
[client] Some layout fixes, added versions in comboBox for lectureDetailsWindow
4 files changed, 79 insertions, 31 deletions
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 71ea8404..6ba1f149 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 @@ -12,7 +12,6 @@ import java.util.Comparator; import java.util.List; import javax.swing.JMenuItem; -import javax.swing.SwingUtilities; import org.apache.log4j.Logger; import org.openslx.bwlp.thrift.iface.ImageDetailsRead; @@ -143,8 +142,8 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout { lblUpdateTime.setText(FormatHelper.longDate(image.getUpdateTime())); txtId.setText(image.getImageBaseId()); txtVersion.setText(image.getLatestVersionId()); - - + + List<OperatingSystem> osList = MetaDataCache.getOperatingSystems(); // all fine, lets sort it Collections.sort(osList, new Comparator<OperatingSystem>() { @@ -169,14 +168,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(); + // refreshList(); } /** @@ -186,13 +185,14 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout { */ private void makeEditable(boolean editable) { txtTitle.setEnabled(editable); - txtDescription.setEnabled(editable); - txtTags.setEnabled(editable); - txtVersion.setEnabled(editable); - txtId.setEnabled(editable); + txtDescription.setEditable(editable); + txtTags.setEditable(editable); + txtVersion.setEditable(editable); + txtId.setEditable(editable); btnIsTemplate.setEnabled(editable); cboOperatingSystem.setEnabled(editable); cboShareMode.setEnabled(editable); + btnSaveChanges.setEnabled(editable); } /** @@ -206,5 +206,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 7d1b03c9..ea826d0d 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 @@ -1,12 +1,20 @@ package org.openslx.dozmod.gui.window; +import java.awt.Component; import java.awt.Frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; +import java.util.List; + +import javax.swing.DefaultComboBoxModel; +import javax.swing.DefaultListCellRenderer; +import javax.swing.JList; import org.apache.log4j.Logger; +import org.openslx.bwlp.thrift.iface.ImageDetailsRead; +import org.openslx.bwlp.thrift.iface.ImageVersionDetails; import org.openslx.bwlp.thrift.iface.LectureRead; import org.openslx.dozmod.gui.Gui; import org.openslx.dozmod.gui.MainWindow; @@ -27,6 +35,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout { private final LectureDetailsWindow me = this; private LectureRead lecture = null; + private ImageDetailsRead image = null; public LectureDetailsWindow(Frame modalParent) { super(modalParent); @@ -48,13 +57,20 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout { } }); setFocusable(true); + + btnAutoUpdate.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + cboVersions.setEnabled(!btnAutoUpdate.isSelected()); + } + }); } /** * @param lectureId the id of the lecture to be displayed */ public void setLecture(final String lectureId) { - QuickTimer.scheduleOnce(new Task() { @Override public void fire() { @@ -68,11 +84,24 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout { } catch (Exception e) { error = e; } + // getting imageDetailsRead for the versions + if (lecture != null) { + try { + synchronized (me) { + if (image != null) + return; + image = ThriftManager.getSatClient().getImageDetails(Session.getSatelliteToken(), lecture.getImage().getImageBaseId()); + } + } catch (Exception e) { + + error = e; + } + } final Exception e = error; Gui.asyncExec(new Runnable() { @Override public void run() { - if (e != null || lecture == null) { + if (e != null || lecture == null || image == null) { Gui.showMessageBox(null, "Konnte Daten der Vorlesung nicht abrufen", MessageType.ERROR, LOGGER, e); dispose(); @@ -89,29 +118,40 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout { * callback function when we received the lecture's details from the server */ private void fill() { - if (lecture == null) + if (lecture == null || image == null) return; txtTitle.setText(lecture.getLectureName()); txtDescription.setText(lecture.getDescription()); - if (lecture.image != null) - txtImageName.setText(lecture.image.getImageName()); + txtImageName.setText(image.getImageName()); lblOwner.setUser(UserCache.find(lecture.getOwnerId())); lblUpdater.setUser(UserCache.find(lecture.getUpdaterId())); lblCreateTime.setText(FormatHelper.longDate(lecture.getCreateTime())); lblUpdateTime.setText(FormatHelper.longDate(lecture.getUpdateTime())); lblStartTime.setText(FormatHelper.longDate(lecture.getStartTime())); lblEndTime.setText(FormatHelper.longDate(lecture.getEndTime())); - txtId.setText(lecture.getLectureId()); btnIsExam.setSelected(lecture.isExam); btnAutoUpdate.setSelected(lecture.autoUpdate); + cboVersions.setEnabled(!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()]))); + // version combo + List<ImageVersionDetails> versions = image.getVersions(); + cboVersions.setModel(new DefaultComboBoxModel<ImageVersionDetails>(versions.toArray(new ImageVersionDetails[versions.size()]))); + cboVersions.setRenderer(new DefaultListCellRenderer() { + @Override + public Component getListCellRendererComponent(JList<?> list, Object value, int index, + boolean isSelected, boolean cellHasFocus) { + super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); + if (value instanceof ImageVersionDetails) { + ImageVersionDetails version = (ImageVersionDetails) value; + setText(FormatHelper.longDate(version.getCreateTime())); + } + return this; + } + }); // TODO grey out non editable components, lecture image has no permissions yet @@ -128,19 +168,20 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout { */ private void makeEditable(boolean editable) { 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())); - // + txtDescription.setEditable(editable); + txtId.setEditable(editable); + + // TODO functionality for changing dates still missing + // 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); + btnSaveChanges.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 c380d02a..9e5486ae 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 @@ -78,8 +78,10 @@ public abstract class ImageDetailsWindowLayout extends JDialog { // description txtDescription = new JTextArea(); + txtDescription.setLineWrap(true); + txtDescription.setPreferredSize(new Dimension(450, 100)); infoPanel.add(new JLabel("Beschreibung"), GridPos.get(0, row, false, false)); - infoPanel.add(new JScrollPane(txtDescription), GridPos.get(1, row++, true, false)); + infoPanel.add(new JScrollPane(txtDescription), GridPos.get(1, row++, true, true)); // owner lblOwner = new PersonLabel(); @@ -152,8 +154,10 @@ public abstract class ImageDetailsWindowLayout extends JDialog { buttonPanel.add(btnClose); add(buttonPanel, BorderLayout.SOUTH); + // --- Version table on the right (EAST) side JPanel versionTablePanel = new JPanel(); versionTablePanel.setLayout(new BorderLayout()); + versionTablePanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); JLabel lblVersion = new JLabel("Image Versionen"); lblVersion.setFont(lblVersion.getFont().deriveFont(Font.BOLD)); versionTablePanel.add(lblVersion, BorderLayout.NORTH); 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 ae199a9a..a5b0b0d9 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 @@ -1,6 +1,7 @@ package org.openslx.dozmod.gui.window.layout; import java.awt.BorderLayout; +import java.awt.Dimension; import java.awt.Font; import java.awt.Frame; import java.awt.GridBagLayout; @@ -67,8 +68,10 @@ public abstract class LectureDetailsWindowLayout extends JDialog { infoPanel.add(txtTitle, GridPos.get(0, row++, 2, 1, true, false)); // description txtDescription = new JTextArea(); + txtDescription.setLineWrap(true); + txtDescription.setPreferredSize(new Dimension(450, 100)); infoPanel.add(new JLabel("Beschreibung"), GridPos.get(0, row, false, false)); - infoPanel.add(new JScrollPane(txtDescription), GridPos.get(1, row++, true, false)); + infoPanel.add(new JScrollPane(txtDescription), GridPos.get(1, row++, true, true)); // linked image JPanel linkedImagePanel = new JPanel(); // name |
