package org.openslx.dozmod.gui.window;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Map;
import org.apache.log4j.Logger;
import org.openslx.bwlp.thrift.iface.LecturePermissions;
import org.openslx.dozmod.gui.helper.UiFeedback;
import org.openslx.dozmod.gui.window.layout.LecturePermissionWindowLayout;
/**
* Window for modifying the custom permissions of an lecture.
*/
@SuppressWarnings("serial")
public class LecturePermissionWindow extends LecturePermissionWindowLayout implements UiFeedback {
private static final Logger LOGGER = Logger.getLogger(LecturePermissionWindow.class);
private boolean okUsed = false;
/**
* Don't use this constructor, use static function
* LectureCustomPermissionWindow.open instead.
*/
protected LecturePermissionWindow(final Window modalParent,
final Map<String, LecturePermissions> permissionMap, final LecturePermissions defaultPermissions,
String ownerId) {
super(modalParent);
/**
* initialise the lecturePermissionManager
*/
ctlPermissionManager.initPanel(permissionMap, defaultPermissions, ownerId);
chkCustomPermAdmin.setSelected(defaultPermissions.admin);
chkCustomPermEdit.setSelected(defaultPermissions.edit);
ActionListener updateDefaultPermissionListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ctlPermissionManager.updateDefaultPermissions(chkCustomPermAdmin.isSelected(),
chkCustomPermEdit.isSelected());
}
};
chkCustomPermAdmin.addActionListener(updateDefaultPermissionListener);
chkCustomPermEdit.addActionListener(updateDefaultPermissionListener);
/**
* ActionListeners for the buttons.
*/
btnOk.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
okUsed = true;
dispose();
}
});
btnClose.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
dispose();
}
});
}
/**
* Set a created ImageCustomPermissionWindow visible and return resulting
* permissions
*
* @return PermissionDefaultToCustomLink with default- and customPermissions
* when using OK button, null otherwise
*/
private void run() {
setVisible(true);
if (okUsed)
ctlPermissionManager.getPermissions();
}
/**
* Create new LecturePermissionWindow dialog
*
* @param modalParent parentwindow of the popup window
* @param permissionMap the permissions of the lecture
* @param defaultPermissions default permissions of the lecture
* @param ownerId Id not to be shown in the list to add new users. Can be
* null.
* @return PermissionDefaultToCustomLink with new permissions of null, if
* abort button has been used
*/
public static void open(Window modalParent, Map<String, LecturePermissions> permissionMap,
LecturePermissions defaultPermissions, String ownerId) {
new LecturePermissionWindow(modalParent, permissionMap, defaultPermissions, ownerId).run();
}
@Override
public boolean wantConfirmQuit() {
// TODO only return true if user added something new in the list
return false;
}
@Override
public void escapePressed() {
dispose();
}
}