diff options
| author | Stephan Schwaer | 2015-08-20 17:55:57 +0200 |
|---|---|---|
| committer | Stephan Schwaer | 2015-08-20 17:55:57 +0200 |
| commit | 1b14253f1a6c2fb0cd4653c14da6ecd077aeed98 (patch) | |
| tree | 453115fc4975931dbe1ade1de6b82649415fe290 /dozentenmodul/src/main/java | |
| parent | [client] save that one byte/int/bit :) (diff) | |
| download | tutor-module-1b14253f1a6c2fb0cd4653c14da6ecd077aeed98.tar.gz tutor-module-1b14253f1a6c2fb0cd4653c14da6ecd077aeed98.tar.xz tutor-module-1b14253f1a6c2fb0cd4653c14da6ecd077aeed98.zip | |
[client] added LectureCustomPermissionManager and merged ImagePermissionManager with it's layout.
Diffstat (limited to 'dozentenmodul/src/main/java')
6 files changed, 196 insertions, 86 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/ImageCustomPermissionManager.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/ImageCustomPermissionManager.java index 27a28f21..0c6d1837 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/ImageCustomPermissionManager.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/ImageCustomPermissionManager.java @@ -1,5 +1,6 @@ package org.openslx.dozmod.gui.control; +import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; @@ -7,11 +8,16 @@ import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import javax.swing.BorderFactory; +import javax.swing.JButton; import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JScrollPane; import org.apache.log4j.Logger; import org.openslx.bwlp.thrift.iface.ImagePermissions; import org.openslx.bwlp.thrift.iface.UserInfo; +import org.openslx.dozmod.gui.control.table.ImagePermissionTable; import org.openslx.dozmod.gui.control.table.ImagePermissionTable.UserImagePermissions; import org.openslx.dozmod.gui.window.UserListWindow; import org.openslx.dozmod.gui.window.UserListWindow.UserAddedCallback; @@ -20,15 +26,19 @@ import org.openslx.dozmod.gui.window.UserListWindow.UserAddedCallback; /** * Panel including ImagePermissionTable and add/remove buttons for setting customImagePermissions. */ -public class ImageCustomPermissionManager extends ImageCustomPermissionManagerLayout { +public class ImageCustomPermissionManager extends JPanel { +protected ImagePermissionTable permissionTable; + + protected JButton btnAddUser; + protected JButton btnRemoveUser; + private ImageCustomPermissionManager me; - private ArrayList<UserImagePermissions> permissionList; + private ArrayList<UserImagePermissions> permissionList = new ArrayList<UserImagePermissions>(); private Map<String, ImagePermissions> newPermissionMap; - private ActionListener addButtonListener = null; - private ActionListener removeButtonListener = null; + private ImagePermissions defaultPermissions; private static final Logger LOGGER = Logger.getLogger(ImageCustomPermissionManager.class); @@ -36,31 +46,19 @@ public class ImageCustomPermissionManager extends ImageCustomPermissionManagerLa public ImageCustomPermissionManager(){ super(); me = this; - } - - /** - * Initialise the PermissionManager - * @param permissionMap the old permission, to initialise the table with, null creates empty table. - * @param defaultPermissions the permissions for a newly added user - */ - public void initPanel(Map<String, ImagePermissions> permissionMap, final ImagePermissions defaultPermissions){ - this.newPermissionMap = permissionMap == null ? new HashMap<String, ImagePermissions>() : permissionMap; - permissionList = new ArrayList<UserImagePermissions>(); - - for (Entry<String, ImagePermissions> e : newPermissionMap.entrySet()) { - permissionList.add(new UserImagePermissions(e.getKey(), e.getValue())); - } - - permissionTable.setData(permissionList, false); + setLayout(new BorderLayout()); + setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); + permissionTable = new ImagePermissionTable(); + add(new JScrollPane(permissionTable), BorderLayout.CENTER); + JPanel userButtonPane = new JPanel(); + btnAddUser = new JButton("Benutzer hinzufügern"); + userButtonPane.add(btnAddUser); + btnRemoveUser = new JButton("Benutzer entfernen"); + userButtonPane.add(btnRemoveUser); + add(userButtonPane, BorderLayout.SOUTH); - // clear listeners (multiple calls to init) - if(addButtonListener != null) - btnAddUser.removeActionListener(addButtonListener); - if(removeButtonListener != null) - btnRemoveUser.removeActionListener(removeButtonListener); - // add user button listener - addButtonListener = new ActionListener() { + btnAddUser.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO again: which frame to give? JOptionPane.getFrameForComponent(me) sounds cool at least :) @@ -83,11 +81,10 @@ public class ImageCustomPermissionManager extends ImageCustomPermissionManagerLa } }, "Hinzufügen"); } - }; - btnAddUser.addActionListener(addButtonListener); + }); // delete user button listener - removeButtonListener = new ActionListener() { + btnRemoveUser.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -98,8 +95,24 @@ public class ImageCustomPermissionManager extends ImageCustomPermissionManagerLa } permissionTable.setData(permissionList, false); } - }; - btnRemoveUser.addActionListener(removeButtonListener); + }); + } + + /** + * Initialise the PermissionManager + * @param permissionMap the old permission, to initialise the table with, null creates empty table. + * @param defaultPermissions the permissions for a newly added user + */ + public void initPanel(Map<String, ImagePermissions> permissionMap, final ImagePermissions defaultPermissions){ + this.newPermissionMap = permissionMap == null ? new HashMap<String, ImagePermissions>() : permissionMap; + permissionList.clear(); + this.defaultPermissions = defaultPermissions; + + for (Entry<String, ImagePermissions> e : newPermissionMap.entrySet()) { + permissionList.add(new UserImagePermissions(e.getKey(), e.getValue())); + } + + permissionTable.setData(permissionList, false); } diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/ImageCustomPermissionManagerLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/ImageCustomPermissionManagerLayout.java deleted file mode 100644 index 5f07bd7b..00000000 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/ImageCustomPermissionManagerLayout.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.openslx.dozmod.gui.control; - -import java.awt.BorderLayout; - -import javax.swing.BorderFactory; -import javax.swing.JButton; -import javax.swing.JPanel; -import javax.swing.JScrollPane; - -import org.openslx.dozmod.gui.control.table.ImagePermissionTable; - - -/** - * Layout for the ImageCustomPermissionManager - */ -public class ImageCustomPermissionManagerLayout extends JPanel { - - protected ImagePermissionTable permissionTable; - - protected JButton btnAddUser; - protected JButton btnRemoveUser; - - public ImageCustomPermissionManagerLayout(){ - super(); - setLayout(new BorderLayout()); - setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); - permissionTable = new ImagePermissionTable(); - add(new JScrollPane(permissionTable), BorderLayout.CENTER); - JPanel userButtonPane = new JPanel(); - btnAddUser = new JButton("Benutzer hinzufügern"); - userButtonPane.add(btnAddUser); - btnRemoveUser = new JButton("Benutzer entfernen"); - userButtonPane.add(btnRemoveUser); - add(userButtonPane, BorderLayout.SOUTH); - } -} diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/LectureCustomPermissionManager.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/LectureCustomPermissionManager.java new file mode 100644 index 00000000..a105437d --- /dev/null +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/LectureCustomPermissionManager.java @@ -0,0 +1,138 @@ +package org.openslx.dozmod.gui.control; + +import java.awt.BorderLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + +import javax.swing.BorderFactory; +import javax.swing.JButton; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JScrollPane; + +import org.apache.log4j.Logger; +import org.openslx.bwlp.thrift.iface.LecturePermissions; +import org.openslx.bwlp.thrift.iface.UserInfo; +import org.openslx.dozmod.gui.control.table.LecturePermissionTable; +import org.openslx.dozmod.gui.control.table.LecturePermissionTable.UserLecturePermissions; +import org.openslx.dozmod.gui.window.UserListWindow; +import org.openslx.dozmod.gui.window.UserListWindow.UserAddedCallback; + + +/** + * Panel including LecturePermissionTable and add/remove buttons for setting customLecturePermissions. + */ +public class LectureCustomPermissionManager extends JPanel{ + + private LectureCustomPermissionManager me; + + protected LecturePermissionTable permissionTable; + + protected JButton btnAddUser; + protected JButton btnRemoveUser; + + private ArrayList<UserLecturePermissions> permissionList = new ArrayList<UserLecturePermissions>(); + private Map<String, LecturePermissions> newPermissionMap; + + private LecturePermissions defaultPermissions; + + private static final Logger LOGGER = Logger.getLogger(LectureCustomPermissionManager.class); + + + public LectureCustomPermissionManager(){ + super(); + me = this; + + setLayout(new BorderLayout()); + setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); + permissionTable = new LecturePermissionTable(); + add(new JScrollPane(permissionTable), BorderLayout.CENTER); + JPanel userButtonPane = new JPanel(); + btnAddUser = new JButton("Benutzer hinzufügern"); + userButtonPane.add(btnAddUser); + btnRemoveUser = new JButton("Benutzer entfernen"); + userButtonPane.add(btnRemoveUser); + add(userButtonPane, BorderLayout.SOUTH); + + // add user button listener + btnAddUser.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + // TODO again: which frame to give? JOptionPane.getFrameForComponent(me) sounds cool at least :) + UserListWindow.open(JOptionPane.getFrameForComponent(me), new UserAddedCallback() { + + @Override + public void userAdded(final UserInfo newUser, UserListWindow window) { + + // check if we have this user already + for (UserLecturePermissions current : permissionList) { + if (current.userId.equals(newUser.userId)) { + LOGGER.debug("User already present in the list, skipping!"); + return; + } + } + // add it to the list with default permissions + permissionList.add(new UserLecturePermissions(newUser.userId, new LecturePermissions(defaultPermissions))); + LOGGER.debug("User added: " + newUser); + permissionTable.setData(permissionList, false); + } + }, "Hinzufügen"); + } + }); + + // delete user button listener + btnRemoveUser.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + final UserLecturePermissions selected = permissionTable.getSelectedItem(); + LOGGER.debug("Removing: " + selected); + if (!permissionList.remove(selected)) { + LOGGER.debug("Could not remove: " + selected); + } + permissionTable.setData(permissionList, false); + } + }); + } + + /** + * Initialise the PermissionManager + * @param permissionMap the old permission, to initialise the table with, null creates empty table. + * @param defaultPermissions the permissions for a newly added user + */ + public void initPanel(Map<String, LecturePermissions> permissionMap, final LecturePermissions defaultPermissions){ + this.newPermissionMap = permissionMap == null ? new HashMap<String, LecturePermissions>() : permissionMap; + permissionList.clear(); + this.defaultPermissions = defaultPermissions; + + for (Entry<String, LecturePermissions> e : newPermissionMap.entrySet()) { + permissionList.add(new UserLecturePermissions(e.getKey(), e.getValue())); + } + + permissionTable.setData(permissionList, false); + } + + + /** + * Get map with the permissions set in the table of the manager. + * @return Map with new custom permissions, null if something went wrong + */ + public Map<String, LecturePermissions> getMap(){ + // save the table stuff to our upload wizard state + if (permissionList == null) + return null; + + newPermissionMap.clear(); + + // put permissions of the list into the map + for (UserLecturePermissions perm : permissionList) { + newPermissionMap.put(perm.userId, perm.permissions); + } + return newPermissionMap; + } + +} diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageCustomPermissionWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageCustomPermissionWindow.java index 5302bdba..deea0719 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageCustomPermissionWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageCustomPermissionWindow.java @@ -3,42 +3,34 @@ package org.openslx.dozmod.gui.window; import java.awt.Frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.util.ArrayList; import java.util.Map; -import java.util.Map.Entry; - -import javax.swing.JOptionPane; import org.apache.log4j.Logger; import org.apache.thrift.TException; import org.openslx.bwlp.thrift.iface.ImagePermissions; -import org.openslx.bwlp.thrift.iface.UserInfo; import org.openslx.dozmod.gui.Gui; -import org.openslx.dozmod.gui.control.table.ImagePermissionTable.UserImagePermissions; import org.openslx.dozmod.gui.helper.MessageType; -import org.openslx.dozmod.gui.window.UserListWindow.UserAddedCallback; import org.openslx.dozmod.gui.window.layout.ImageCustomPermissionWindowLayout; import org.openslx.dozmod.thrift.Session; import org.openslx.thrifthelper.ThriftManager; - +/** + * Window for modifying the custom permissions of an image. + */ @SuppressWarnings("serial") public class ImageCustomPermissionWindow extends ImageCustomPermissionWindowLayout { private static final Logger LOGGER = Logger.getLogger(ImageCustomPermissionWindow.class); - private final ImageCustomPermissionWindow me; protected ImageCustomPermissionWindow(final Frame modalParent, final Map<String, ImagePermissions> permissionMap, final ImagePermissions defaultPermissions, final String imageBaseId) { super(modalParent); me = this; - imagePermissionManager.initPanel(permissionMap, defaultPermissions); - btnSave.addActionListener(new ActionListener() { - + @Override public void actionPerformed(ActionEvent e) { // push permissions to satellite server @@ -51,7 +43,7 @@ public class ImageCustomPermissionWindow extends ImageCustomPermissionWindowLayo dispose(); } }); - + btnClose.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageCustomPermissionWindowLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageCustomPermissionWindowLayout.java index a2c660be..cf657c2e 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageCustomPermissionWindowLayout.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageCustomPermissionWindowLayout.java @@ -25,8 +25,6 @@ public class ImageCustomPermissionWindowLayout extends JDialog { protected final JButton btnSave; protected final JButton btnClose; protected final ImageCustomPermissionManager imagePermissionManager; - - private static String title = "Benutzerdefinierte Berechtigungen"; @@ -35,7 +33,7 @@ public class ImageCustomPermissionWindowLayout extends JDialog { : ModalityType.MODELESS); imagePermissionManager = new ImageCustomPermissionManager(); - + // spaced buttons JPanel buttonPane = new JPanel(); buttonPane.setLayout(new BoxLayout(buttonPane, BoxLayout.LINE_AXIS)); diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageCustomPermissionPage.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageCustomPermissionPage.java index dbabeb57..901309a1 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageCustomPermissionPage.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageCustomPermissionPage.java @@ -13,6 +13,8 @@ public class ImageCustomPermissionPage extends ImageCustomPermissionPageLayout { private final static Logger LOGGER = Logger.getLogger(ImageCustomPermissionPage.class); + private boolean initDone = false; + private UploadWizardState state = null; /** @@ -28,9 +30,12 @@ public class ImageCustomPermissionPage extends ImageCustomPermissionPageLayout { @Override protected void onPageEnter() { - imageCustomPermissionManager.initPanel(state.permissionMap, state.permissions); + if(!initDone){ + imageCustomPermissionManager.initPanel(state.permissionMap, state.permissions); + initDone = true; + } } - + @Override protected void onPageLeave() { LOGGER.debug("Saving permissions to state ..."); |
