summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control
diff options
context:
space:
mode:
authorSimon Rettberg2018-06-20 17:02:18 +0200
committerSimon Rettberg2018-06-20 17:02:18 +0200
commitd0b6c9c7243472d66b3e11fc733c19b01ae92749 (patch)
treed567e33d2846e9d5ee36d1a5113bb7f44dcaeb85 /dozentenmodul/src/main/java/org/openslx/dozmod/gui/control
parent[client] Add GUI change handling classes (diff)
downloadtutor-module-d0b6c9c7243472d66b3e11fc733c19b01ae92749.tar.gz
tutor-module-d0b6c9c7243472d66b3e11fc733c19b01ae92749.tar.xz
tutor-module-d0b6c9c7243472d66b3e11fc733c19b01ae92749.zip
[client] Switch over LectureDetailsWindow to new change monitor system
This saves ~230 LOC, making the class about 25% smaller
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/control')
-rwxr-xr-xdozentenmodul/src/main/java/org/openslx/dozmod/gui/control/LdapFilterConfigurator.java7
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/LectureCustomPermissionManager.java52
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/LocationSelector.java68
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/NetshareConfigurator.java63
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/RunscriptConfigurator.java7
5 files changed, 96 insertions, 101 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/LdapFilterConfigurator.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/LdapFilterConfigurator.java
index 03a2b553..1950327d 100755
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/LdapFilterConfigurator.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/LdapFilterConfigurator.java
@@ -20,6 +20,7 @@ import javax.swing.event.TableModelListener;
import org.apache.log4j.Logger;
import org.openslx.bwlp.thrift.iface.LdapFilter;
import org.openslx.dozmod.gui.Gui;
+import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor;
import org.openslx.dozmod.gui.control.table.LectureLdapFilterTable;
import org.openslx.dozmod.gui.control.table.QScrollPane;
import org.openslx.dozmod.gui.helper.GridManager;
@@ -160,6 +161,12 @@ public class LdapFilterConfigurator extends LdapFilterConfiguratorLayout {
listener.stateChanged(null);
}
}
+
+ public void addToChangeMonitor(DialogChangeMonitor changeMonitor) {
+ // TODO Auto-generated method stub
+
+ }
+
}
/**
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
index d943d4c6..b853f7e2 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/LectureCustomPermissionManager.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/LectureCustomPermissionManager.java
@@ -3,6 +3,8 @@ package org.openslx.dozmod.gui.control;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.EventListener;
import java.util.EventObject;
@@ -53,8 +55,7 @@ public class LectureCustomPermissionManager extends JPanel {
protected JButton btnAddUser;
protected JButton btnRemoveUser;
- private ArrayList<UserLecturePermissions> permissionList = new ArrayList<UserLecturePermissions>();
- private Map<String, LecturePermissions> newPermissionMap;
+ private final ArrayList<UserLecturePermissions> permissionList = new ArrayList<UserLecturePermissions>();
private LecturePermissions defaultPermissions;
@@ -108,7 +109,7 @@ public class LectureCustomPermissionManager extends JPanel {
permissionList.add(new UserLecturePermissions(newUser.userId, new LecturePermissions(
defaultPermissions)));
permissionTable.setData(permissionList, false);
- fireUserChangeEvent(new UserChangeEvent(new Object()));
+ fireUserChangeEvent();
}
}, "Hinzufügen", ownerId);
}
@@ -123,7 +124,7 @@ public class LectureCustomPermissionManager extends JPanel {
LOGGER.debug("Could not remove: " + selected);
}
permissionTable.setData(permissionList, false);
- fireUserChangeEvent(new UserChangeEvent(new Object()));
+ fireUserChangeEvent();
}
});
@@ -136,9 +137,14 @@ public class LectureCustomPermissionManager extends JPanel {
btnRemoveUser.doClick();
}
});
- }
- public LecturePermissionTable getTable() {
- return permissionTable;
+ permissionTable.addMouseListener(new MouseAdapter() {
+ @Override
+ public void mouseClicked(MouseEvent e) {
+ // TODO: This is stupid; permissionTable should fire an event
+ // if one of the check boxes changes.
+ fireUserChangeEvent();
+ }
+ });
}
/**
@@ -152,13 +158,12 @@ public class LectureCustomPermissionManager extends JPanel {
public void initPanel(Map<String, LecturePermissions> permissionMap,
final LecturePermissions defaultPermissions, String ownerId) {
this.ownerId = ownerId;
- this.newPermissionMap = permissionMap == null ? new HashMap<String, LecturePermissions>()
- : permissionMap;
this.defaultPermissions = defaultPermissions;
-
permissionList.clear();
- for (Entry<String, LecturePermissions> e : newPermissionMap.entrySet()) {
- permissionList.add(new UserLecturePermissions(e.getKey(), e.getValue()));
+ if (permissionMap != null) {
+ for (Entry<String, LecturePermissions> e : permissionMap.entrySet()) {
+ permissionList.add(new UserLecturePermissions(e.getKey(), e.getValue()));
+ }
}
permissionTable.setData(permissionList, false);
}
@@ -168,12 +173,8 @@ public class LectureCustomPermissionManager extends JPanel {
*
* @return Map with new custom permissions, null if something went wrong
*/
- public Map<String, LecturePermissions> updatePermissionReferences() {
- if (permissionList == null)
- return null;
-
- newPermissionMap.clear();
-
+ public Map<String, LecturePermissions> getPermissions() {
+ Map<String, LecturePermissions> newPermissionMap = new HashMap<>(permissionList.size());
// put permissions of the list into the map
for (UserLecturePermissions perm : permissionList) {
newPermissionMap.put(perm.userId, perm.permissions);
@@ -198,11 +199,16 @@ public class LectureCustomPermissionManager extends JPanel {
* (Mostly needed for the reactToChange() stuff in LectureDetailsWindow)
*/
protected EventListenerList listenerList = new EventListenerList();
+
+ /**
+ * Shared instance, since there is no data attached (yet)
+ */
+ private static final UserChangeEvent CHANGE_EVENT = new UserChangeEvent();
- public class UserChangeEvent extends EventObject {
+ public static class UserChangeEvent extends EventObject {
- public UserChangeEvent(Object source) {
- super(source);
+ public UserChangeEvent() {
+ super(new Object());
}
}
@@ -218,12 +224,12 @@ public class LectureCustomPermissionManager extends JPanel {
listenerList.remove(UserChangeEventListener.class, listener);
}
- void fireUserChangeEvent(UserChangeEvent evt) {
+ void fireUserChangeEvent() {
Object[] listeners = listenerList.getListenerList();
for (int i = 0; i < listeners.length; i++) {
if (listeners[i] == UserChangeEventListener.class) {
((UserChangeEventListener) listeners[i + 1])
- .stateChanged(evt);
+ .stateChanged(CHANGE_EVENT);
}
}
}
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/LocationSelector.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/LocationSelector.java
index 29a3d570..f880cf7b 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/LocationSelector.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/LocationSelector.java
@@ -22,6 +22,9 @@ import javax.swing.tree.TreePath;
import org.apache.log4j.Logger;
import org.openslx.bwlp.thrift.iface.Location;
import org.openslx.dozmod.gui.Gui;
+import org.openslx.dozmod.gui.changemonitor.AbstractControlWrapper;
+import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor;
+import org.openslx.dozmod.gui.control.JCheckBoxTree.CheckChangeEventListener;
import org.openslx.dozmod.gui.helper.GridManager;
import org.openslx.dozmod.thrift.Session;
import org.openslx.dozmod.thrift.cache.MetaDataCache;
@@ -43,7 +46,8 @@ public class LocationSelector extends JPanel {
private final static Logger LOGGER = Logger.getLogger(LocationSelector.class);
private final JRadioButton btnLimitToLocations;
- private final JRadioButton btnPrioritizeInLocations;
+ private final JRadioButton btnPrioritizeInLocations;
+ private final ButtonGroup grpLocationExclusive;
/**
* Flag for the initialization state
*/
@@ -53,10 +57,13 @@ public class LocationSelector extends JPanel {
* List of IDs of locations to set the selection to when we finished
* initializing
*/
- private List<Integer> preselection;
+ private List<Integer> preselection = null;
+
private JCheckBoxTree locationTree = new JCheckBoxTree();
private HashMap<Integer, DefaultMutableTreeNode> locationNodesMap = new HashMap<Integer, DefaultMutableTreeNode>();
+ private AbstractControlWrapper<?> treeChangeHandler = null;
+
/**
* Constructor. Initializes the grid layout, the location lists and
* initializes the data
@@ -68,9 +75,9 @@ public class LocationSelector extends JPanel {
"Veranstaltung mit höherer Priorität in den ausgewählten Räumen anzeigen");
btnPrioritizeInLocations.setSelected(true);
- ButtonGroup grpButtons = new ButtonGroup();
- grpButtons.add(btnLimitToLocations);
- grpButtons.add(btnPrioritizeInLocations);
+ grpLocationExclusive = new ButtonGroup();
+ grpLocationExclusive.add(btnLimitToLocations);
+ grpLocationExclusive.add(btnPrioritizeInLocations);
// build the grid
GridManager grid = new GridManager(this, 1);
@@ -88,34 +95,29 @@ public class LocationSelector extends JPanel {
init();
}
- public JCheckBoxTree getTree() {
- return locationTree;
- }
- public JRadioButton[] getButtons() {
- JRadioButton[] buttons = new JRadioButton[2];
- buttons[0] = btnLimitToLocations;
- buttons[1] = btnPrioritizeInLocations;
- return buttons;
- }
-
/**
* Async fetching of the list of the locations from the server
*/
private void init() {
QuickTimer.scheduleOnce(new Task() {
- List<Location> locsList = null;
-
@Override
public void fire() {
- locsList = MetaDataCache.getLocations();
+ final List<Location> locsList = MetaDataCache.getLocations();
+ if (locsList == null)
+ return;
Gui.asyncExec(new Runnable() {
@Override
public void run() {
- initDone = fillLocationsList(locsList);
+ fillLocationsList(locsList);
+ initDone = true;
// check if preselection was set before we were done
// initialising
- if (initDone && preselection != null) {
+ if (preselection != null) {
setSelectionInternal(preselection);
+ preselection = null;
+ if (treeChangeHandler != null) {
+ treeChangeHandler.reset();
+ }
}
}
});
@@ -131,12 +133,8 @@ public class LocationSelector extends JPanel {
* of this widget.
*
* @param locations list of locations to set the available list to
- * @return true if setting the list worked, false otherwise
*/
- public boolean fillLocationsList(final List<Location> locations) {
- if (locations == null)
- return false;
-
+ private void fillLocationsList(final List<Location> locations) {
DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode(Session.getSatelliteAddress());
DefaultTreeModel treeModel = new DefaultTreeModel(rootNode, true);
// build map containing the node object for each location
@@ -184,7 +182,6 @@ public class LocationSelector extends JPanel {
locationTree.setModel(treeModel);
locationTree.updateUI();
locationTree.repaint();
- return true;
}
/**
@@ -218,10 +215,14 @@ public class LocationSelector extends JPanel {
LOGGER.error("No list given!");
return;
}
- preselection = list;
- // if we are initialised, we need to explicitly set the selection
if (initDone) {
- setSelectionInternal(preselection);
+ // if we are already initialised, we need to explicitly set the selection
+ setSelectionInternal(list);
+ } else {
+ if (treeChangeHandler != null) {
+ treeChangeHandler.mute();
+ }
+ preselection = list;
}
}
@@ -367,6 +368,15 @@ public class LocationSelector extends JPanel {
locationTree.setCheckedState(selectedPathsList, true);
locationTree.repaint();
}
+
+ public void addToChangeMonitor(DialogChangeMonitor changeMonitor) {
+ treeChangeHandler = changeMonitor.add(locationTree, null, null);
+ changeMonitor.add(grpLocationExclusive, null, null);
+ }
+
+ public void addCheckChangeEventListener(CheckChangeEventListener checkChangeEventListener) {
+ locationTree.addCheckChangeEventListener(checkChangeEventListener);
+ }
}
@SuppressWarnings("serial")
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/NetshareConfigurator.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/NetshareConfigurator.java
index 317e172b..d80ba8b3 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/NetshareConfigurator.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/NetshareConfigurator.java
@@ -32,6 +32,7 @@ import org.apache.log4j.Logger;
import org.openslx.bwlp.thrift.iface.NetShare;
import org.openslx.bwlp.thrift.iface.NetShareAuth;
import org.openslx.dozmod.gui.Gui;
+import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor;
import org.openslx.dozmod.gui.control.ComboBox.ComboBoxRenderer;
import org.openslx.dozmod.gui.control.table.NetshareTable;
import org.openslx.dozmod.gui.control.table.QScrollPane;
@@ -54,17 +55,7 @@ public class NetshareConfigurator extends NetshareConfiguratorLayout {
'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };
public NetshareConfigurator() {
-
super();
-
- tblNetshare.getModel().addTableModelListener(new TableModelListener() {
- @Override
- public void tableChanged(TableModelEvent e) {
- fireNetshareConfigurationChangeEvent(
- new NetshareConfigurationChangeEvent(NetshareConfigurator.this));
- }
- });
-
tblNetshare.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
@@ -268,39 +259,13 @@ public class NetshareConfigurator extends NetshareConfiguratorLayout {
tblNetshare.setData(tblNetshareData, false);
return true;
}
-
- protected EventListenerList listenerList = new EventListenerList();
-
- public class NetshareConfigurationChangeEvent extends EventObject {
-
- private static final long serialVersionUID = -511509960878320591L;
-
- public NetshareConfigurationChangeEvent(Object source) {
- super(source);
- }
- }
-
- public interface NetshareConfigurationChangeEventListener extends EventListener {
- public void stateChanged(NetshareConfigurationChangeEvent event);
- }
-
- public void addNetshareConfigurationChangeEventListener(
- NetshareConfigurationChangeEventListener listener) {
- listenerList.add(NetshareConfigurationChangeEventListener.class, listener);
+
+ public void addTableModelListener(TableModelListener listener) {
+ tblNetshare.getModel().addTableModelListener(listener);
}
- public void removeNetshareConfigurationChangeEventListener(
- NetshareConfigurationChangeEventListener listener) {
- listenerList.remove(NetshareConfigurationChangeEventListener.class, listener);
- }
-
- void fireNetshareConfigurationChangeEvent(NetshareConfigurationChangeEvent evt) {
- Object[] listeners = listenerList.getListenerList();
- for (int i = 0; i < listeners.length; i++) {
- if (listeners[i] == NetshareConfigurationChangeEventListener.class) {
- ((NetshareConfigurationChangeEventListener) listeners[i + 1]).stateChanged(evt);
- }
- }
+ public void addToChangeMonitor(DialogChangeMonitor changeMonitor) {
+ changeMonitor.add(tblNetshare);
}
}
@@ -315,14 +280,14 @@ class NetshareConfiguratorLayout extends JPanel {
+ " die automatisch beim Start der Veranstaltung eingebunden werden sollen."
+ " Der Platzhalter <em>%loginuser%</em> wird im Pfad durch den Loginnamen des Nutzers ersetzt.</html>";
- protected QLabel lblShareAuth, lblSharePath, lblShareName, lblMountPoint, lblUsername, lblPassword,
+ protected final QLabel lblShareAuth, lblSharePath, lblShareName, lblMountPoint, lblUsername, lblPassword,
lblError;
- protected NetshareTable tblNetshare = new NetshareTable();
- protected JTextField tfSharePath, tfShareName, tfUsername;
- protected JPasswordField tfPassword;
- protected JButton btnAdd, btnDel;
- protected JCheckBox chkShowPass;
- protected ComboBox<NetShareAuth> cboNetshareAuth = new ComboBox<>(new ComboBoxRenderer<NetShareAuth>() {
+ protected final NetshareTable tblNetshare = new NetshareTable();
+ protected final JTextField tfSharePath, tfShareName, tfUsername;
+ protected final JPasswordField tfPassword;
+ protected final JButton btnAdd, btnDel;
+ protected final JCheckBox chkShowPass;
+ protected final ComboBox<NetShareAuth> cboNetshareAuth = new ComboBox<>(new ComboBoxRenderer<NetShareAuth>() {
@Override
public String renderItem(NetShareAuth item) {
if (item == null)
@@ -330,7 +295,7 @@ class NetshareConfiguratorLayout extends JPanel {
return FormatHelper.netShareAuthName(item);
}
});
- protected ComboBox<Character> cboNetshareMountPoint = new ComboBox<>(new ComboBoxRenderer<Character>() {
+ protected final ComboBox<Character> cboNetshareMountPoint = new ComboBox<>(new ComboBoxRenderer<Character>() {
@Override
public String renderItem(Character letter) {
if (letter == null)
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/RunscriptConfigurator.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/RunscriptConfigurator.java
index d3935b62..49adce6e 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/RunscriptConfigurator.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/RunscriptConfigurator.java
@@ -19,6 +19,7 @@ import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.event.EventListenerList;
+import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor;
import org.openslx.dozmod.gui.control.ComboBox.ComboBoxRenderer;
import org.openslx.dozmod.gui.control.RunscriptConfigurator.RunscriptType;
import org.openslx.dozmod.gui.helper.GridManager;
@@ -196,6 +197,12 @@ public class RunscriptConfigurator extends RunscriptConfiguratorLayout {
}
}
}
+
+ public void addToChangeMonitor(DialogChangeMonitor changeMonitor) {
+ changeMonitor.add(taRunScript);
+ changeMonitor.addEditableCombo(cboRunscriptType, null, null, null);
+ }
+
}
/**