From 4908138a474579b263222be3644184f6c135fdbe Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Fri, 14 Aug 2015 17:36:06 +0200 Subject: [client] Use GridManager in lecture details window --- .../dozmod/gui/window/LectureDetailsWindow.java | 49 +++++++++++++++++++++- 1 file changed, 47 insertions(+), 2 deletions(-) (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java') 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 d901881f..400d7018 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 @@ -10,14 +10,18 @@ import java.util.Date; import java.util.List; import javax.swing.DefaultComboBoxModel; +import javax.swing.JOptionPane; import org.apache.log4j.Logger; import org.apache.thrift.TException; import org.openslx.bwlp.thrift.iface.ImageDetailsRead; import org.openslx.bwlp.thrift.iface.ImageVersionDetails; import org.openslx.bwlp.thrift.iface.LectureRead; +import org.openslx.bwlp.thrift.iface.UserInfo; 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.UserListWindow.UserAddedCallback; import org.openslx.dozmod.gui.window.layout.LectureDetailsWindowLayout; import org.openslx.dozmod.permissions.LecturePerms; import org.openslx.dozmod.thrift.Session; @@ -56,6 +60,22 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout { cboVersions.setEnabled(!btnAutoUpdate.isSelected()); } }); + + btnChangeOwner.addActionListener(new ActionListener() { + @Override + 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"); + } + }); + makeEditable(false); } /** @@ -147,21 +167,45 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout { endCal.get(Calendar.DATE)); endTime.getModel().setValue(endCal.getTime()); - makeEditable(LecturePerms.canEdit(lecture)); + makeEditable(true); pack(); MainWindow.centerShell(this); setVisible(true); } + private void setLectureOwner(final UserInfo user) { + QuickTimer.scheduleOnce(new Task() { + @Override + public void fire() { + try { + ThriftManager.getSatClient().setLectureOwner(Session.getSatelliteToken(), + lecture.getLectureId(), user.getUserId()); + } catch (TException e) { + ThriftError.showMessage(me, LOGGER, e, "Fehler beim Übertragen der Besitzrechte"); + return; + } + Gui.showMessageBox(me, "Besitzrechte übertragen an " + FormatHelper.userName(user), + MessageType.INFO, null, null); + makeEditable(false); + String lectureId = lecture.getLectureId(); + synchronized (me) { + image = null; + lecture = null; + } + setLecture(lectureId); + } + }); + } + /** * Enables/disables the editable fields based on 'editable' * * @param editable true to make fields editable, false otherwise. */ private void makeEditable(boolean editable) { + editable = editable && LecturePerms.canEdit(lecture); txtTitle.setEnabled(editable); txtDescription.setEditable(editable); - txtId.setEditable(editable); // TODO functionality for changing dates still missing // lblCreateTime.setText(FormatHelper.longDate(lecture.getCreateTime())); @@ -174,6 +218,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout { btnAutoUpdate.setEnabled(editable); cboVersions.setEnabled(editable); btnSaveChanges.setEnabled(editable); + btnChangeOwner.setEnabled(editable && LecturePerms.canAdmin(lecture)); } /** -- cgit v1.2.3-55-g7522