summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java
diff options
context:
space:
mode:
authorJonathan Bauer2016-09-02 17:29:47 +0200
committerJonathan Bauer2016-09-02 17:29:47 +0200
commitb794e38b72473538461b97882f4f20ede7042ea9 (patch)
tree7a4fad9eb687f451c6bd5e3e293f205790ac0bc3 /dozentenmodul/src/main/java
parent[client] don't use System.lineSeparator() but regular linefeed/carriage return (diff)
downloadtutor-module-b794e38b72473538461b97882f4f20ede7042ea9.tar.gz
tutor-module-b794e38b72473538461b97882f4f20ede7042ea9.tar.xz
tutor-module-b794e38b72473538461b97882f4f20ede7042ea9.zip
[client] splitted netrules & runscript tab/panel/w/e
Diffstat (limited to 'dozentenmodul/src/main/java')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/NetrulesConfigurator.java (renamed from dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/AdvancedConfigurator.java)100
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/RunscriptConfigurator.java178
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java46
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureNetrulesWindow.java (renamed from dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureAdvancedSettingsWindow.java)30
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/LectureAdvancedSettingsWindowLayout.java56
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/LectureDetailsWindowLayout.java34
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/LectureOptionsPageLayout.java25
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/LectureOptionsPage.java27
8 files changed, 292 insertions, 204 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/AdvancedConfigurator.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/NetrulesConfigurator.java
index 219cdb67..c518739f 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/AdvancedConfigurator.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/NetrulesConfigurator.java
@@ -14,7 +14,6 @@ import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
-import javax.swing.JTextArea;
import javax.swing.JTextPane;
import javax.swing.event.EventListenerList;
import javax.swing.text.BadLocationException;
@@ -31,16 +30,14 @@ import org.openslx.dozmod.gui.helper.MessageType;
import org.openslx.dozmod.gui.helper.TextChangeListener;
/**
- * Widget for advanced configuration options for lectures. This handles
- * following options - Network rules - Runscript - USB
+ * Widget for netrules configuration options for lectures
*/
-public class AdvancedConfigurator extends AdvancedConfiguratorLayout {
+public class NetrulesConfigurator extends NetrulesConfiguratorLayout {
private static final long serialVersionUID = -3497629601818983994L;
private final static Logger LOGGER = Logger
- .getLogger(AdvancedConfigurator.class);
+ .getLogger(NetrulesConfigurator.class);
private String originalRawRuleText = null;
- private String originalRunScript = null;
/**
* Character defining how the rules are parsed, e.g. for whitespace \\s
* Example: "8.8.8.8 80 in" would be split in -hostname "8.8.8.8" -port "80"
@@ -48,24 +45,23 @@ public class AdvancedConfigurator extends AdvancedConfiguratorLayout {
*/
private static final String FIELD_DELIMITER = "\\s";
- public AdvancedConfigurator() {
+ public NetrulesConfigurator() {
super();
final TextChangeListener docListener = new TextChangeListener() {
@Override
public void changed() {
- fireAdvancedConfigurationChangeEvent(new AdvancedConfigurationChangeEvent(
+ fireNetrulesConfigurationChangeEvent(new NetrulesConfigurationChangeEvent(
new Object()));
}
};
tpNetworkRules.getDocument().addDocumentListener(docListener);
- taRunScript.getDocument().addDocumentListener(docListener);
+
}
public boolean hasChanged() {
- return !originalRawRuleText.equalsIgnoreCase(tpNetworkRules.getText())
- || !originalRunScript.equalsIgnoreCase(taRunScript.getText());
+ return !originalRawRuleText.equalsIgnoreCase(tpNetworkRules.getText());
}
/**
@@ -75,14 +71,14 @@ public class AdvancedConfigurator extends AdvancedConfiguratorLayout {
*
* @return advanced configuration object composed of the parsed network
* rules as List<NetRule> and the raw runscript text as String
- * @see org.openslx.dozmod.gui.control.AdvancedConfigurator.AdvancedConfiguration
+ * @see org.openslx.dozmod.gui.control.NetrulesConfigurator.AdvancedConfiguration
*/
- public AdvancedConfiguration getState() {
+ public NetrulesConfiguration getState() {
// cleanup the TextPane for network rules if needed
String input = tpNetworkRules.getText().trim();
List<NetRule> rules = parseNetRules(input);
if (rules != null) {
- return new AdvancedConfiguration(rules, taRunScript.getText());
+ return new NetrulesConfiguration(rules);
}
return null;
}
@@ -95,13 +91,10 @@ public class AdvancedConfigurator extends AdvancedConfiguratorLayout {
* @param config
* AdvancedConfiguration to set the state to
*/
- public void setState(final AdvancedConfiguration config) {
+ public void setState(final NetrulesConfiguration config) {
// setText() blanks the text area if null is given, so no null checks
originalRawRuleText = decodeNetRulesToText(config.netRulesList);
- originalRunScript = config.runScriptText != null ? config.runScriptText
- : "";
this.tpNetworkRules.setText(originalRawRuleText);
- this.taRunScript.setText(originalRunScript);
}
/**
@@ -354,14 +347,11 @@ public class AdvancedConfigurator extends AdvancedConfiguratorLayout {
* has two members: the list of NetRule(s) (as List<NetRule>) and the
* runScriptText (as String)
*/
- public static class AdvancedConfiguration {
+ public static class NetrulesConfiguration {
public List<NetRule> netRulesList;
- public String runScriptText;
- public AdvancedConfiguration(List<NetRule> netRulesList,
- String runScriptText) {
+ public NetrulesConfiguration(List<NetRule> netRulesList) {
this.netRulesList = netRulesList;
- this.runScriptText = runScriptText;
}
}
@@ -371,38 +361,38 @@ public class AdvancedConfigurator extends AdvancedConfiguratorLayout {
*/
protected EventListenerList listenerList = new EventListenerList();
- public class AdvancedConfigurationChangeEvent extends EventObject {
+ public class NetrulesConfigurationChangeEvent extends EventObject {
private static final long serialVersionUID = -8779550754760035845L;
- public AdvancedConfigurationChangeEvent(Object source) {
+ public NetrulesConfigurationChangeEvent(Object source) {
super(source);
}
}
- public interface AdvancedConfigurationChangeEventListener extends
+ public interface NetrulesConfigurationChangeEventListener extends
EventListener {
- public void stateChanged(AdvancedConfigurationChangeEvent event);
+ public void stateChanged(NetrulesConfigurationChangeEvent event);
}
- public void addAdvancedConfigurationChangeEventListener(
- AdvancedConfigurationChangeEventListener listener) {
- listenerList.add(AdvancedConfigurationChangeEventListener.class,
+ public void addNetrulesConfigurationChangeEventListener(
+ NetrulesConfigurationChangeEventListener listener) {
+ listenerList.add(NetrulesConfigurationChangeEventListener.class,
listener);
}
- public void removeAdvancedConfigurationChangeEventListener(
- AdvancedConfigurationChangeEventListener listener) {
- listenerList.remove(AdvancedConfigurationChangeEventListener.class,
+ public void removeNetrulesConfigurationChangeEventListener(
+ NetrulesConfigurationChangeEventListener listener) {
+ listenerList.remove(NetrulesConfigurationChangeEventListener.class,
listener);
}
- void fireAdvancedConfigurationChangeEvent(
- AdvancedConfigurationChangeEvent evt) {
+ void fireNetrulesConfigurationChangeEvent(
+ NetrulesConfigurationChangeEvent evt) {
Object[] listeners = listenerList.getListenerList();
for (int i = 0; i < listeners.length; i++) {
- if (listeners[i] == AdvancedConfigurationChangeEventListener.class) {
- ((AdvancedConfigurationChangeEventListener) listeners[i + 1])
+ if (listeners[i] == NetrulesConfigurationChangeEventListener.class) {
+ ((NetrulesConfigurationChangeEventListener) listeners[i + 1])
.stateChanged(evt);
}
}
@@ -413,22 +403,17 @@ public class AdvancedConfigurator extends AdvancedConfiguratorLayout {
* Internal layout class for the advanced configurator (to keep it clean even
* for widgets)
*/
-class AdvancedConfiguratorLayout extends JPanel {
-
- private static final long serialVersionUID = 648729071828404053L;
+class NetrulesConfiguratorLayout extends JPanel {
+ private static final long serialVersionUID = 5266120380443817325L;
private final static String txtNetworkOptionsTitle = "Netzwerk Einstellungen";
private final static String txtNetworkOptionsDesc = "Wenn Sie den Internetzugriff deaktiviert haben, können Sie hier Ausnahmen definieren (Whitelist). Bitte definieren Sie Ihre Regeln im Format <host> <port> <in|out>.";
private final static String txtNetworkRulesTitle = "Netzwerkregeln";
- private final static String txtRunScriptTitle = "Startskript";
- private final static String txtRunScriptDesc = "Ein hier eingetragenes Skript wird nach dem Start dieser VM automatisch ausgeführt.";
-
+
private final JPanel pnlNetworkOptions;
- private final JPanel pnlRunScript;
protected final JTextPane tpNetworkRules;
- protected final JTextArea taRunScript;
- public AdvancedConfiguratorLayout() {
+ public NetrulesConfiguratorLayout() {
GridManager grid = new GridManager(this, 1, true,
new Insets(5, 5, 5, 5));
@@ -455,31 +440,8 @@ class AdvancedConfiguratorLayout extends JPanel {
.expand(true, true);
gridNetworkOptions.finish(false);
-
-
- // second middle panel for the run script textpane
- pnlRunScript = new JPanel();
- GridManager gridRunScript = new GridManager(pnlRunScript, 1, true,
- new Insets(2, 2, 2, 2));
- taRunScript = new JTextArea("", 5, 20);
- taRunScript.setLineWrap(true);
- taRunScript.setWrapStyleWord(true);
- JScrollPane scpRunScript = new JScrollPane(taRunScript,
- JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
- JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
- pnlRunScript.setBorder(BorderFactory
- .createTitledBorder(txtRunScriptTitle));
- gridRunScript
- .add(new WordWrapLabel(txtRunScriptDesc, false, true))
- .fill(true, false).expand(true, false);
- gridRunScript.nextRow();
- gridRunScript.add(scpRunScript).fill(true, true).expand(true, true);
- gridRunScript.finish(false);
-
// build the final grid
grid.add(pnlNetworkOptions).fill(true, true).expand(true, true);
- grid.nextRow();
- grid.add(pnlRunScript).fill(true, true).expand(true, true);
grid.finish(false);
}
}
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
new file mode 100644
index 00000000..8a517c4f
--- /dev/null
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/RunscriptConfigurator.java
@@ -0,0 +1,178 @@
+package org.openslx.dozmod.gui.control;
+
+import java.awt.Insets;
+import java.util.EventListener;
+import java.util.EventObject;
+
+import javax.swing.BorderFactory;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+import javax.swing.event.EventListenerList;
+
+import org.openslx.dozmod.gui.helper.GridManager;
+import org.openslx.dozmod.gui.helper.TextChangeListener;
+
+/**
+ * Widget for advanced configuration options for lectures. This handles
+ * following options - Network rules - Runscript - USB
+ */
+public class RunscriptConfigurator extends RunscriptConfiguratorLayout {
+
+ private static final long serialVersionUID = -3497629601818983994L;
+ private String originalRunScript = null;
+
+ public RunscriptConfigurator() {
+ super();
+
+ final TextChangeListener docListener = new TextChangeListener() {
+ @Override
+ public void changed() {
+ fireRunscriptConfigurationChangeEvent(new RunscriptConfigurationChangeEvent(
+ new Object()));
+ }
+ };
+ taRunScript.getDocument().addDocumentListener(docListener);
+
+ }
+
+ public boolean hasChanged() {
+ return !originalRunScript.equalsIgnoreCase(taRunScript.getText());
+ }
+
+ /**
+ * Gets the state of the widget. This will first try to parse the
+ * tpNetworkRules and taRunScript and build the corresponding
+ * AdvancedConfiguration Object returned.
+ *
+ * @return advanced configuration object composed of the parsed network
+ * rules as List<NetRule> and the raw runscript text as String
+ * @see org.openslx.dozmod.gui.control.AdvancedConfigurator.AdvancedConfiguration
+ */
+ public RunscriptConfiguration getState() {
+ // cleanup the TextPane for network rules if needed
+
+
+ String runscriptString = taRunScript.getText();
+ if (runscriptString != null) {
+ return new RunscriptConfiguration(runscriptString);
+ }
+ return null;
+ }
+
+ /**
+ * Sets the state of this widget to the given AdvancedConfiguration. Basicly
+ * this sets the content of the text areas to the corresponding network
+ * rules/runscript as given by the AdvancedConfiguration object
+ *
+ * @param config
+ * AdvancedConfiguration to set the state to
+ */
+ public void setState(final RunscriptConfiguration config) {
+ // setText() blanks the text area if null is given, so no null checks
+ originalRunScript = config.runScriptText != null ? config.runScriptText
+ : "";
+ this.taRunScript.setText(originalRunScript);
+ }
+
+ /**
+ * Wrapper class for the advanced configuration information needed since we
+ * need to return a single object from the runAndReturn routine. This class
+ * has two members: the list of NetRule(s) (as List<NetRule>) and the
+ * runScriptText (as String)
+ */
+ public static class RunscriptConfiguration {
+ public String runScriptText;
+
+ public RunscriptConfiguration(String runScriptText) {
+ this.runScriptText = runScriptText;
+ }
+ }
+
+ /**
+ * Custom event mechanism to detect changes to the user list (Mostly needed
+ * for the reactToChange() stuff in LectureDetailsWindow)
+ */
+ protected EventListenerList listenerList = new EventListenerList();
+
+ public class RunscriptConfigurationChangeEvent extends EventObject {
+
+ private static final long serialVersionUID = -8779550754760035845L;
+
+ public RunscriptConfigurationChangeEvent(Object source) {
+ super(source);
+ }
+ }
+
+ public interface RunscriptConfigurationChangeEventListener extends
+ EventListener {
+ public void stateChanged(RunscriptConfigurationChangeEvent event);
+ }
+
+ public void addRunscriptConfigurationChangeEventListener(
+ RunscriptConfigurationChangeEventListener listener) {
+ listenerList.add(RunscriptConfigurationChangeEventListener.class,
+ listener);
+ }
+
+ public void removeRunscriptConfigurationChangeEventListener(
+ RunscriptConfigurationChangeEventListener listener) {
+ listenerList.remove(RunscriptConfigurationChangeEventListener.class,
+ listener);
+ }
+
+ void fireRunscriptConfigurationChangeEvent(
+ RunscriptConfigurationChangeEvent evt) {
+ Object[] listeners = listenerList.getListenerList();
+ for (int i = 0; i < listeners.length; i++) {
+ if (listeners[i] == RunscriptConfigurationChangeEventListener.class) {
+ ((RunscriptConfigurationChangeEventListener) listeners[i + 1])
+ .stateChanged(evt);
+ }
+ }
+ }
+}
+
+/**
+ * Internal layout class for the advanced configurator (to keep it clean even
+ * for widgets)
+ */
+class RunscriptConfiguratorLayout extends JPanel {
+
+ private static final long serialVersionUID = 648729071828404053L;
+
+ private final static String txtRunScriptTitle = "Startskript";
+ private final static String txtRunScriptDesc = "Ein hier eingetragenes Skript wird nach dem Start dieser VM automatisch ausgeführt.";
+
+ private final JPanel pnlRunScript;
+ protected final JTextArea taRunScript;
+
+ public RunscriptConfiguratorLayout() {
+
+ GridManager grid = new GridManager(this, 1, true,
+ new Insets(5, 5, 5, 5));
+
+ // middle panel for the run script textpane
+ pnlRunScript = new JPanel();
+ GridManager gridRunScript = new GridManager(pnlRunScript, 1, true,
+ new Insets(2, 2, 2, 2));
+ taRunScript = new JTextArea("", 5, 20);
+ taRunScript.setLineWrap(true);
+ taRunScript.setWrapStyleWord(true);
+ JScrollPane scpRunScript = new JScrollPane(taRunScript,
+ JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
+ JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+ pnlRunScript.setBorder(BorderFactory
+ .createTitledBorder(txtRunScriptTitle));
+ gridRunScript
+ .add(new WordWrapLabel(txtRunScriptDesc, false, true))
+ .fill(true, false).expand(true, false);
+ gridRunScript.nextRow();
+ gridRunScript.add(scpRunScript).fill(true, true).expand(true, true);
+ gridRunScript.finish(false);
+
+ // build the final grid
+ grid.add(pnlRunScript).fill(true, true).expand(true, true);
+ grid.finish(false);
+ }
+}
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 9d6b6134..58ce9b89 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
@@ -39,13 +39,12 @@ import org.openslx.bwlp.thrift.iface.LectureWrite;
import org.openslx.bwlp.thrift.iface.UserInfo;
import org.openslx.dozmod.gui.Gui;
import org.openslx.dozmod.gui.MainWindow;
-import org.openslx.dozmod.gui.control.AdvancedConfigurator.AdvancedConfiguration;
-import org.openslx.dozmod.gui.control.AdvancedConfigurator.AdvancedConfigurationChangeEvent;
-import org.openslx.dozmod.gui.control.AdvancedConfigurator.AdvancedConfigurationChangeEventListener;
import org.openslx.dozmod.gui.control.JCheckBoxTree.CheckChangeEvent;
import org.openslx.dozmod.gui.control.JCheckBoxTree.CheckChangeEventListener;
import org.openslx.dozmod.gui.control.LectureCustomPermissionManager.UserChangeEvent;
import org.openslx.dozmod.gui.control.LectureCustomPermissionManager.UserChangeEventListener;
+import org.openslx.dozmod.gui.control.NetrulesConfigurator.NetrulesConfiguration;
+import org.openslx.dozmod.gui.control.RunscriptConfigurator.RunscriptConfiguration;
import org.openslx.dozmod.gui.helper.DateTimeHelper;
import org.openslx.dozmod.gui.helper.MessageType;
import org.openslx.dozmod.gui.helper.TextChangeListener;
@@ -136,7 +135,8 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
/**
* Holder of the netrules/runscript of this lecture
*/
- private AdvancedConfiguration currentAdvConf = null;
+ private NetrulesConfiguration currentNetrules = null;
+ private RunscriptConfiguration currentRunscript = null;
/**
* Constructor
@@ -258,12 +258,16 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
chkCustomPermAdmin.addActionListener(changeReacter);
chkCustomPermEdit.addActionListener(changeReacter);
- ctlAdvancedConfigurator.addAdvancedConfigurationChangeEventListener(new AdvancedConfigurationChangeEventListener() {
+ btnNetrules.addActionListener(new ActionListener() {
@Override
- public void stateChanged(AdvancedConfigurationChangeEvent event) {
- btnSaveChanges.setEnabled(ctlAdvancedConfigurator.hasChanged());
+ public void actionPerformed(ActionEvent e) {
+ NetrulesConfiguration newNetrules = LectureNetrulesWindow.open(me, new NetrulesConfiguration(currentNetrules.netRulesList));
+ if (newNetrules != null)
+ currentNetrules = newNetrules;
+ reactToChange();
}
});
+
final TextChangeListener docListener = new TextChangeListener() {
@Override
public void changed() {
@@ -369,7 +373,8 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
lblImageNameInfo.setText(image.getImageName());
}
// remember original advanced config
- currentAdvConf = new AdvancedConfiguration(lecture.networkExceptions, lecture.runscript);
+ currentNetrules = new NetrulesConfiguration(lecture.networkExceptions);
+ currentRunscript = new RunscriptConfiguration(lecture.runscript);
// remember default permissions
if (lecture.defaultPermissions != null) {
@@ -395,10 +400,9 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
locationInfo = new LocationInfo(lecture.locationIds, lecture.limitToLocations);
ctlLocationSelector.setOnlyInSelection(locationInfo.limitToLocations);
ctlLocationSelector.setSelectedLocationsAsIds(locationInfo.locationList);
- // advanced config stuff, save current information
- currentAdvConf = new AdvancedConfiguration(lecture.networkExceptions, lecture.runscript);
+
// init advanced info
- ctlAdvancedConfigurator.setState(new AdvancedConfiguration(lecture.networkExceptions, lecture.runscript));
+ ctlRunscriptConfigurator.setState(new RunscriptConfiguration(lecture.runscript));
txtTitle.setText(lecture.getLectureName());
lblTitleInfo.setText(lecture.getLectureName());
@@ -608,8 +612,8 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
|| !lecture.defaultPermissions.equals(originalDefaultPermissions)
|| (locationInfo != null && lecture.locationIds != null && !lecture.locationIds.equals(locationInfo.locationList))
|| (locationInfo != null && lecture.limitToLocations != locationInfo.limitToLocations)
- || (currentAdvConf != null && lecture.networkExceptions != null && !lecture.networkExceptions.equals(currentAdvConf.netRulesList))
- || (currentAdvConf != null && lecture.runscript != null && !lecture.runscript.equals(currentAdvConf.runScriptText))
+ || (currentNetrules != null && lecture.networkExceptions != null && !lecture.networkExceptions.equals(currentNetrules))
+ || (currentRunscript != null && lecture.runscript != null && !lecture.runscript.equals(currentRunscript))
|| imageLinkChanged;
return changed;
@@ -640,27 +644,27 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
: cboVersions.getItemAt(cboVersions.getSelectedIndex()).versionId;
}
// goto to advanced tab and check (by getting) the state of the textAreas
- currentAdvConf = ctlAdvancedConfigurator.getState();
- if (currentAdvConf == null) {
+ currentRunscript = ctlRunscriptConfigurator.getState();
+ if (currentRunscript == null) {
// getState() will return null only if it couldn't parse the rules
// which means that the user got informed about what was invalid
// So we just return here until the parsing works.
- pnlTabs.setSelectedIndex(pnlTabs.indexOfTab("Erweitert"));
+ pnlTabs.setSelectedIndex(pnlTabs.indexOfTab("Startskript"));
return false;
}
- metadataChanged |= (currentAdvConf.netRulesList != lecture.networkExceptions || currentAdvConf.runScriptText != lecture.runscript);
+ metadataChanged |= (currentNetrules.netRulesList != lecture.networkExceptions || currentRunscript.runScriptText != lecture.runscript);
// now check if we need to push a new LectureWrite
if (metadataChanged) {
// first build the LectureWrite from the GUI fields
final LectureWrite metadata = new LectureWrite(txtTitle.getText(), txtDescription.getText(),
lecture.getImageVersionId(), chkAutoUpdate.isSelected(), chkIsActive.isSelected(),
DateTimeHelper.getDateFrom(dtpStartDate, spnStartTime).getTime() / 1000L,
- DateTimeHelper.getDateFrom(dtpEndDate, spnEndTime).getTime() / 1000L, currentAdvConf.runScriptText, null,
+ DateTimeHelper.getDateFrom(dtpEndDate, spnEndTime).getTime() / 1000L, currentRunscript.runScriptText, null,
chkIsExam.isSelected(), chkHasInternetAccess.isSelected(), // TODO USBACCESS
lecture.getDefaultPermissions(), locationInfo.locationList, locationInfo.limitToLocations,
// TODO: coming "false" is Location related
false, chkHasUsbAccess.isSelected());
- metadata.setNetworkExceptions(currentAdvConf.netRulesList);
+ metadata.setNetworkExceptions(currentNetrules.netRulesList);
// now trigger the actual action
try {
ThriftManager.getSatClient().updateLecture(Session.getSatelliteToken(),
@@ -745,8 +749,8 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
if (pnlTabs.indexOfTab("Raumauswahl") != -1) {
pnlTabs.setEnabledAt(pnlTabs.indexOfTab("Raumauswahl"), editable);
}
- if (pnlTabs.indexOfTab("Erweitert") != -1) {
- pnlTabs.setEnabledAt(pnlTabs.indexOfTab("Erweitert"), editable);
+ if (pnlTabs.indexOfTab("Startskript") != -1) {
+ pnlTabs.setEnabledAt(pnlTabs.indexOfTab("Startskript"), editable);
}
btnChangeOwner.setEnabled(LecturePerms.canAdmin(lecture));
btnDownloadImage.setEnabled(ImagePerms.canDownload(image));
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureAdvancedSettingsWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureNetrulesWindow.java
index 844f464b..c497701b 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureAdvancedSettingsWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureNetrulesWindow.java
@@ -7,27 +7,27 @@ import java.awt.event.ActionListener;
import org.apache.log4j.Logger;
import org.openslx.dozmod.gui.Gui;
import org.openslx.dozmod.gui.Gui.GuiCallable;
-import org.openslx.dozmod.gui.control.AdvancedConfigurator.AdvancedConfiguration;
+import org.openslx.dozmod.gui.control.NetrulesConfigurator.NetrulesConfiguration;
import org.openslx.dozmod.gui.helper.MessageType;
import org.openslx.dozmod.gui.helper.UiFeedback;
-import org.openslx.dozmod.gui.window.layout.LectureAdvancedSettingsWindowLayout;
+import org.openslx.dozmod.gui.window.layout.LectureNetrulesWindowLayout;
-public class LectureAdvancedSettingsWindow extends LectureAdvancedSettingsWindowLayout
+public class LectureNetrulesWindow extends LectureNetrulesWindowLayout
implements UiFeedback {
private static final long serialVersionUID = -1970717955867180231L;
private static final Logger LOGGER = Logger
- .getLogger(LectureAdvancedSettingsWindow.class);
+ .getLogger(LectureNetrulesWindow.class);
private boolean apply = false;
- private AdvancedConfiguration newConfig = null;
- public LectureAdvancedSettingsWindow(Window modalParent,
- AdvancedConfiguration advConfig) {
+ private NetrulesConfiguration newConfig = null;
+ public LectureNetrulesWindow(Window modalParent,
+ NetrulesConfiguration netrules) {
super(modalParent);
btnSave.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
- newConfig = ctlAdvancedConfigurator.getState();
+ newConfig = ctlNetrulesConfigurator.getState();
if (newConfig == null) {
return;
}
@@ -42,14 +42,14 @@ public class LectureAdvancedSettingsWindow extends LectureAdvancedSettingsWindow
safeClose();
}
});
- ctlAdvancedConfigurator.setState(advConfig);
+ ctlNetrulesConfigurator.setState(netrules);
}
/**
* @return list of ids of the selected locations. Will be either a new list
* if the user clicked apply or the list received from the sat.
*/
- public AdvancedConfiguration runAndReturn() {
+ public NetrulesConfiguration runAndReturn() {
setVisible(true);
if (!apply)
return null;
@@ -66,12 +66,12 @@ public class LectureAdvancedSettingsWindow extends LectureAdvancedSettingsWindow
* @return forwards the return value of the window itself: list of ids of
* the selected locations
*/
- public static AdvancedConfiguration open(final Window modalParent,
- final AdvancedConfiguration advConfig) {
- return Gui.syncExec(new GuiCallable<AdvancedConfiguration>() {
+ public static NetrulesConfiguration open(final Window modalParent,
+ final NetrulesConfiguration netrules) {
+ return Gui.syncExec(new GuiCallable<NetrulesConfiguration>() {
@Override
- public AdvancedConfiguration run() {
- return new LectureAdvancedSettingsWindow(modalParent, advConfig)
+ public NetrulesConfiguration run() {
+ return new LectureNetrulesWindow(modalParent, netrules)
.runAndReturn();
}
});
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/LectureAdvancedSettingsWindowLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/LectureAdvancedSettingsWindowLayout.java
deleted file mode 100644
index 6769b862..00000000
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/LectureAdvancedSettingsWindowLayout.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package org.openslx.dozmod.gui.window.layout;
-
-import java.awt.BorderLayout;
-import java.awt.Window;
-
-import javax.swing.BorderFactory;
-import javax.swing.Box;
-import javax.swing.BoxLayout;
-import javax.swing.JButton;
-import javax.swing.JDialog;
-import javax.swing.JPanel;
-
-import org.openslx.dozmod.gui.Gui;
-import org.openslx.dozmod.gui.control.AdvancedConfigurator;
-
-public class LectureAdvancedSettingsWindowLayout extends JDialog {
-
- private static final long serialVersionUID = 5565439063675405598L;
-
- private final static String txtTitle = "Erweiterte Einstellungen";
- private final static String txtButtonClose = "Abbrechen";
- private final static String txtButtonSave = "Übernehmen";
-
- protected final AdvancedConfigurator ctlAdvancedConfigurator;
-
- private final JPanel pnlBottomButtons;
- protected final JButton btnSave;
- protected final JButton btnClose;
-
- public LectureAdvancedSettingsWindowLayout(Window modalParent) {
- super(modalParent, txtTitle, modalParent != null ? ModalityType.APPLICATION_MODAL
- : ModalityType.MODELESS);
-
- // the main content widget
- ctlAdvancedConfigurator = new AdvancedConfigurator();
-
- // init the layout
- getContentPane().setLayout(new BorderLayout());
- getContentPane().add(ctlAdvancedConfigurator, BorderLayout.CENTER);
-
- // bottom panel for controls
- pnlBottomButtons = new JPanel();
- pnlBottomButtons.setLayout(new BoxLayout(pnlBottomButtons, BoxLayout.LINE_AXIS));
- pnlBottomButtons.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
- btnClose = new JButton(txtButtonClose);
- btnSave = new JButton(txtButtonSave);
- pnlBottomButtons.add(Box.createHorizontalGlue());
- pnlBottomButtons.add(btnClose);
- pnlBottomButtons.add(btnSave);
- getContentPane().add(pnlBottomButtons, BorderLayout.PAGE_END);
-
- setPreferredSize(Gui.getScaledDimension(500, 400));
- pack();
- Gui.centerShellOverShell(modalParent, this);
- }
-}
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 2b9727db..048061df 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
@@ -32,7 +32,6 @@ import org.jdatepicker.impl.JDatePickerImpl;
import org.jdatepicker.impl.UtilDateModel;
import org.openslx.bwlp.thrift.iface.ImageVersionDetails;
import org.openslx.dozmod.gui.Gui;
-import org.openslx.dozmod.gui.control.AdvancedConfigurator;
import org.openslx.dozmod.gui.control.ComboBox;
import org.openslx.dozmod.gui.control.ComboBox.ComboBoxRenderer;
import org.openslx.dozmod.gui.control.LectureCustomPermissionManager;
@@ -40,6 +39,7 @@ import org.openslx.dozmod.gui.control.LocationSelector;
import org.openslx.dozmod.gui.control.PersonLabel;
import org.openslx.dozmod.gui.control.QDatePickerImpl;
import org.openslx.dozmod.gui.control.QLabel;
+import org.openslx.dozmod.gui.control.RunscriptConfigurator;
import org.openslx.dozmod.gui.control.WordWrapLabel;
import org.openslx.dozmod.gui.helper.GridManager;
import org.openslx.dozmod.thrift.Session;
@@ -78,6 +78,7 @@ public abstract class LectureDetailsWindowLayout extends JDialog {
protected final QLabel lblUseCount;
protected final JButton btnPermissions;
+ protected final JButton btnNetrules;
protected final QLabel lblError;
protected final JButton btnSaveChanges;
@@ -94,7 +95,7 @@ public abstract class LectureDetailsWindowLayout extends JDialog {
protected JTabbedPane pnlTabs;
protected final LectureCustomPermissionManager ctlPermissionManager;
protected final LocationSelector ctlLocationSelector;
- protected final AdvancedConfigurator ctlAdvancedConfigurator;
+ protected final RunscriptConfigurator ctlRunscriptConfigurator;
private static final Properties pickerStrings = new Properties();
@@ -105,7 +106,7 @@ public abstract class LectureDetailsWindowLayout extends JDialog {
protected JPanel pnlTabRestrictions;
protected JPanel pnlTabPermissions;
protected JPanel pnlTabLocations;
- protected JPanel pnlTabAdvanced;
+ protected JPanel pnlTabRunscript;
static {
pickerStrings.put("text.today", "Heute");
@@ -295,33 +296,34 @@ public abstract class LectureDetailsWindowLayout extends JDialog {
grdGeneral.finish(true);
pnlTabRestrictions = new JPanel();
- GridManager grdRestrictions = new GridManager(pnlTabRestrictions, 2, true,
+ GridManager grdRestrictions = new GridManager(pnlTabRestrictions, 3, true,
new Insets(3, 3, 3, 3));
// "restrictions": internet access / usb access / exam
grdRestrictions.add(new JLabel("Internetzugriff"));
+ btnNetrules = new JButton("Ausnahmen");
chkHasInternetAccess = new JCheckBox("zulassen");
- grdRestrictions.add(new WordWrapLabel("Legen Sie hier fest, ob die Veranstaltung Zugriff zum Internet haben soll", false, true)).fill(true, false).expand(true, false);
+ grdRestrictions.add(new WordWrapLabel("Legen Sie hier fest, ob die Veranstaltung Zugriff zum Internet haben soll", false, true), 2).fill(true, false).expand(true, false);
grdRestrictions.nextRow();
grdRestrictions.skip();
grdRestrictions.add(chkHasInternetAccess).fill(true, false).expand(true, false);
- // TODO add netrules button here
+ grdRestrictions.add(btnNetrules).fill(true, false).expand(true, false);
grdRestrictions.nextRow();
grdRestrictions.add(new JLabel("Speichermedium-Zugriff"));
chkHasUsbAccess = new JCheckBox("zulassen");
- grdRestrictions.add(new WordWrapLabel("Legen Sie hier fest, ob die Veranstaltung den Zugriff auf Speichermedien (CD, USB, ...) erlauben soll", false, true)).fill(true, false).expand(true, false);
+ grdRestrictions.add(new WordWrapLabel("Legen Sie hier fest, ob die Veranstaltung den Zugriff auf Speichermedien (CD, USB, ...) erlauben soll", false, true), 2).fill(true, false).expand(true, false);
grdRestrictions.nextRow();
grdRestrictions.skip();
- grdRestrictions.add(chkHasUsbAccess);
+ grdRestrictions.add(chkHasUsbAccess, 2);
grdRestrictions.nextRow();
grdRestrictions.add(new JLabel("E-Prüfung"));
chkIsExam = new JCheckBox("aktiv");
- grdRestrictions.add(new WordWrapLabel("Markieren Sie diese Veranstaltung als E-Prüfung", false, true)).fill(true, false).expand(true, false);
+ grdRestrictions.add(new WordWrapLabel("Markieren Sie diese Veranstaltung als E-Prüfung", false, true), 2).fill(true, false).expand(true, false);
grdRestrictions.nextRow();
grdRestrictions.skip();
- grdRestrictions.add(chkIsExam);
+ grdRestrictions.add(chkIsExam, 2);
btnPermissions = new JButton("Ändern");
grdRestrictions.finish(true);
@@ -357,13 +359,13 @@ public abstract class LectureDetailsWindowLayout extends JDialog {
/* *******************************************************************************
*
- * Tab "Advanced"
+ * Tab "Runscript"
*
********************************************************************************/
- ctlAdvancedConfigurator = new AdvancedConfigurator();
- pnlTabAdvanced = new JPanel();
- GridManager grdAdvanced = new GridManager(pnlTabAdvanced, 1, false);
- grdAdvanced.add(ctlAdvancedConfigurator).fill(true, true).expand(true, true);
+ ctlRunscriptConfigurator = new RunscriptConfigurator();
+ pnlTabRunscript = new JPanel();
+ GridManager grdAdvanced = new GridManager(pnlTabRunscript, 1, false);
+ grdAdvanced.add(ctlRunscriptConfigurator).fill(true, true).expand(true, true);
grdAdvanced.finish(false);
/* *******************************************************************************
@@ -382,7 +384,7 @@ public abstract class LectureDetailsWindowLayout extends JDialog {
pnlTabs.addTab("Raumauswahl", pnlTabLocations);
}
if (Session.isLectureRestrictionsSupported()) {
- pnlTabs.addTab("Erweitert", pnlTabAdvanced);
+ pnlTabs.addTab("Startskript", pnlTabRunscript);
}
pnlTabs.addTab("Berechtigungen", pnlTabPermissions);
add(pnlTabs, BorderLayout.CENTER);
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/LectureOptionsPageLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/LectureOptionsPageLayout.java
index 6dc9e85c..c1f3ca3f 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/LectureOptionsPageLayout.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/LectureOptionsPageLayout.java
@@ -20,7 +20,7 @@ public abstract class LectureOptionsPageLayout extends WizardPage {
protected final JCheckBox chkIsExam;
protected final JCheckBox chkAutoUpdate;
protected final JCheckBox chkIsActive;
- protected final JButton btnAdvanced;
+ protected final JButton btnNetrules;
/**
* Page for additional options of lecture
@@ -28,46 +28,41 @@ public abstract class LectureOptionsPageLayout extends WizardPage {
public LectureOptionsPageLayout(Wizard wizard) {
super(wizard, title);
setDescription("Bitte wählen Sie aus folgenden Optionen aus:");
- GridManager grid = new GridManager(this, 2);
+ GridManager grid = new GridManager(this, 3);
// first column for labels hopefully clearing up some of the mess...
// first category for general options
JLabel lblGeneral = new JLabel("Allgemeines");
grid.add(lblGeneral);
chkAutoUpdate = new JCheckBox("Immer auf aktuellste VM-Version updaten", true);
- grid.add(chkAutoUpdate);
+ grid.add(chkAutoUpdate, 2);
grid.nextRow();
chkIsActive = new JCheckBox("Veranstaltung ist aktiv", true);
grid.skip();
- grid.add(chkIsActive);
+ grid.add(chkIsActive, 2);
grid.nextRow();
chkIsExam = new JCheckBox("Veranstaltung ist eine Prüfung", false);
grid.skip();
- grid.add(chkIsExam);
+ grid.add(chkIsExam, 2);
grid.nextRow();
- grid.add(Box.createVerticalStrut(10), 2);
+ grid.add(Box.createVerticalStrut(10), 3);
grid.nextRow();
// second category for restrictions options
JLabel lblRestriction = new JLabel("Beschränkungen");
grid.add(lblRestriction);
chkInternetEnabled = new JCheckBox("Internet verfügbar", true);
- grid.add(chkInternetEnabled);
+ btnNetrules = new JButton("Ausnahmen");
+ grid.add(chkInternetEnabled).fill(true, false).expand(true, false);
+ grid.add(btnNetrules);
grid.nextRow();
chkUsbEnabled = new JCheckBox("USB-Geräte zulassen", true);
grid.skip();
- grid.add(chkUsbEnabled);
- grid.nextRow();
-
- btnAdvanced = new JButton("Erweiterte Einstellung");
- grid.add(Box.createVerticalStrut(10), 2);
- grid.nextRow();
- grid.skip();
- grid.add(btnAdvanced);
+ grid.add(chkUsbEnabled, 2);
grid.nextRow();
grid.finish(true);
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/LectureOptionsPage.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/LectureOptionsPage.java
index a100ab05..3ab7bf45 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/LectureOptionsPage.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/LectureOptionsPage.java
@@ -5,8 +5,9 @@ import java.awt.event.ActionListener;
import javax.swing.SwingUtilities;
-import org.openslx.dozmod.gui.control.AdvancedConfigurator.AdvancedConfiguration;
-import org.openslx.dozmod.gui.window.LectureAdvancedSettingsWindow;
+import org.openslx.dozmod.gui.control.NetrulesConfigurator.NetrulesConfiguration;
+import org.openslx.dozmod.gui.control.RunscriptConfigurator.RunscriptConfiguration;
+import org.openslx.dozmod.gui.window.LectureNetrulesWindow;
import org.openslx.dozmod.gui.wizard.Wizard;
import org.openslx.dozmod.gui.wizard.layout.LectureOptionsPageLayout;
import org.openslx.dozmod.state.LectureWizardState;
@@ -17,7 +18,8 @@ public class LectureOptionsPage extends LectureOptionsPageLayout {
private LectureOptionsPage me = this;
private LectureWizardState state = null;
- private AdvancedConfiguration currentConf = new AdvancedConfiguration(null, null);
+ private NetrulesConfiguration currentNetrules = new NetrulesConfiguration(null);
+ private RunscriptConfiguration currentRunscript = new RunscriptConfiguration(null);
/**
* Page for lecture options
@@ -25,16 +27,17 @@ public class LectureOptionsPage extends LectureOptionsPageLayout {
public LectureOptionsPage(final Wizard wizard, LectureWizardState state) {
super(wizard);
this.state = state;
- this.currentConf = new AdvancedConfiguration(state.netRules, state.runScriptText);
+ this.currentNetrules = new NetrulesConfiguration(state.netRules);
+ this.currentRunscript = new RunscriptConfiguration(state.runScriptText);
setPageComplete(true);
- btnAdvanced.addActionListener(new ActionListener() {
+ btnNetrules.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
- AdvancedConfiguration newConf = LectureAdvancedSettingsWindow.open(
- SwingUtilities.getWindowAncestor(me), currentConf);
- if (newConf != null) {
- currentConf = newConf;
+ NetrulesConfiguration newNetrules = LectureNetrulesWindow.open(
+ SwingUtilities.getWindowAncestor(me), currentNetrules);
+ if (newNetrules != null) {
+ currentNetrules = newNetrules;
updateState();
}
}
@@ -43,7 +46,7 @@ public class LectureOptionsPage extends LectureOptionsPageLayout {
chkIsExam.setEnabled(false);
chkInternetEnabled.setEnabled(false);
chkUsbEnabled.setEnabled(false);
- btnAdvanced.setEnabled(false);
+ btnNetrules.setEnabled(false);
}
}
@@ -61,8 +64,8 @@ public class LectureOptionsPage extends LectureOptionsPageLayout {
state.internetAccess = chkInternetEnabled.isSelected();
state.isEnabled = chkIsActive.isSelected();
state.usbAllowed = chkUsbEnabled.isSelected();
- state.netRules = currentConf.netRulesList;
- state.runScriptText = currentConf.runScriptText;
+ state.netRules = currentNetrules.netRulesList;
+ state.runScriptText = currentRunscript.runScriptText;
setDescription("Klicken Sie auf 'Weiter' für Berechtigungen oder 'Fertigstellen'.");
return true;