diff options
| author | Simon Rettberg | 2018-06-22 18:58:02 +0200 |
|---|---|---|
| committer | Simon Rettberg | 2018-06-22 18:58:02 +0200 |
| commit | 00195150c868cbe76fcf6e1aee8fdd6f1e60e95b (patch) | |
| tree | 60c024e39b62bac02ecad2a87da27660739688f9 /dozentenmodul/src/main/java | |
| parent | [client] Sanitize class/var names, split up control package (diff) | |
| download | tutor-module-00195150c868cbe76fcf6e1aee8fdd6f1e60e95b.tar.gz tutor-module-00195150c868cbe76fcf6e1aee8fdd6f1e60e95b.tar.xz tutor-module-00195150c868cbe76fcf6e1aee8fdd6f1e60e95b.zip | |
[client] Move netrules configurator into tab
Diffstat (limited to 'dozentenmodul/src/main/java')
8 files changed, 118 insertions, 319 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/DialogChangeMonitor.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/DialogChangeMonitor.java index 7b2c879c..e11f1fdb 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/DialogChangeMonitor.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/DialogChangeMonitor.java @@ -213,6 +213,25 @@ public class DialogChangeMonitor { } } + + /** + * Simple validator that checks if object is not <code>null</code> + */ + public static class NotNullConstraint<T> implements ValidationConstraint<T> { + private final String errorMsg; + + public NotNullConstraint(String errorMessage) { + this.errorMsg = errorMessage; + } + + @Override + public String checkStateValid(T userInput) { + if (userInput == null) + return errorMsg; + return null; + } + + } /* * Default validators diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/NetrulesConfigurator.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/NetrulesConfigurator.java index cb80fc3e..e1c59863 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/NetrulesConfigurator.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/NetrulesConfigurator.java @@ -1,7 +1,10 @@ package org.openslx.dozmod.gui.configurator; import java.awt.Color; +import java.awt.Container; import java.awt.Insets; +import java.awt.event.FocusAdapter; +import java.awt.event.FocusEvent; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.net.InetAddress; @@ -20,6 +23,7 @@ import javax.swing.JScrollPane; import javax.swing.JTextPane; import javax.swing.SwingUtilities; import javax.swing.UIManager; +import javax.swing.event.ChangeListener; import javax.swing.event.EventListenerList; import javax.swing.text.BadLocationException; import javax.swing.text.DefaultStyledDocument; @@ -30,6 +34,7 @@ import org.apache.log4j.Logger; import org.openslx.bwlp.thrift.iface.NetDirection; import org.openslx.bwlp.thrift.iface.NetRule; import org.openslx.dozmod.gui.Gui; +import org.openslx.dozmod.gui.changemonitor.ListEditorWindow; import org.openslx.dozmod.gui.control.WordWrapLabel; import org.openslx.dozmod.gui.helper.GridManager; import org.openslx.dozmod.gui.helper.MessageType; @@ -39,13 +44,15 @@ import org.openslx.util.Util; /** * Widget for netrules configuration of lectures */ -public class NetrulesConfigurator extends NetrulesConfiguratorLayout { +public class NetrulesConfigurator extends NetrulesConfiguratorLayout implements ListEditorWindow<NetRule> { private static final long serialVersionUID = -3497629601818983994L; - private final static Logger LOGGER = Logger - .getLogger(NetrulesConfigurator.class); + private final static Logger LOGGER = Logger.getLogger(NetrulesConfigurator.class); + + private boolean checkChange = false; + private List<NetRule> currentState; + private List<ChangeListener> listeners; - private String originalRawRuleText = 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" @@ -70,7 +77,7 @@ public class NetrulesConfigurator extends NetrulesConfiguratorLayout { final TextChangeListener docListener = new TextChangeListener() { @Override public void changed() { - fireNetrulesConfigurationChangeEvent(new NetrulesConfigurationChangeEvent(NetrulesConfigurator.this)); + checkChange = true; } }; final SimpleAttributeSet as = new SimpleAttributeSet(); @@ -111,10 +118,14 @@ public class NetrulesConfigurator extends NetrulesConfiguratorLayout { }); } }); - } - - public boolean hasChanged() { - return !originalRawRuleText.equalsIgnoreCase(tpNetworkRules.getText()); + tpNetworkRules.addFocusListener(new FocusAdapter() { + @Override + public void focusLost(FocusEvent e) { + if (checkChange) { + fireChangeEvent(); + } + } + }); } /** @@ -123,9 +134,32 @@ public class NetrulesConfigurator extends NetrulesConfiguratorLayout { * * @return the list of rules as parsed by parseNetRules() */ + @Override + public List<NetRule> getState() { + return getState(true); + } + public List<NetRule> getState(boolean silent) { - // cleanup the TextPane for network rules if needed - return parseNetRules(silent); + if (checkChange || !silent) { + currentState = parseNetRules(silent); + } + return currentState; + } + + @Override + public void addChangeListener(ChangeListener l) { + if (listeners == null) { + listeners = new ArrayList<>(); + } + listeners.add(l); + } + + private void fireChangeEvent() { + if (listeners == null) + return; + for (ChangeListener cl : listeners) { + cl.stateChanged(null); + } } /** @@ -136,9 +170,10 @@ public class NetrulesConfigurator extends NetrulesConfiguratorLayout { * as a list of NetRule to set the state to */ public void setState(final List<NetRule> netrules) { - // setText() blanks the text area if null is given, so no null checks - originalRawRuleText = decodeNetRulesToText(netrules); - this.tpNetworkRules.setText(originalRawRuleText); + checkChange = true; + currentState = netrules; + this.tpNetworkRules.setText(decodeNetRulesToText(netrules)); + fireChangeEvent(); } /** @@ -356,48 +391,6 @@ public class NetrulesConfigurator extends NetrulesConfiguratorLayout { return null; } - /** - * Custom event mechanism to detect changes to the netrules list (Mostly - * needed for the reactToChange() stuff in LectureDetailsWindow) - */ - protected EventListenerList listenerList = new EventListenerList(); - - public class NetrulesConfigurationChangeEvent extends EventObject { - - private static final long serialVersionUID = -8779550754760035845L; - - public NetrulesConfigurationChangeEvent(Object source) { - super(source); - } - } - - public interface NetrulesConfigurationChangeEventListener extends - EventListener { - public void stateChanged(NetrulesConfigurationChangeEvent event); - } - - public void addNetrulesConfigurationChangeEventListener( - NetrulesConfigurationChangeEventListener listener) { - listenerList.add(NetrulesConfigurationChangeEventListener.class, - listener); - } - - public void removeNetrulesConfigurationChangeEventListener( - NetrulesConfigurationChangeEventListener listener) { - listenerList.remove(NetrulesConfigurationChangeEventListener.class, - listener); - } - - void fireNetrulesConfigurationChangeEvent( - NetrulesConfigurationChangeEvent evt) { - Object[] listeners = listenerList.getListenerList(); - for (int i = 0; i < listeners.length; i++) { - if (listeners[i] == NetrulesConfigurationChangeEventListener.class) { - ((NetrulesConfigurationChangeEventListener) listeners[i + 1]) - .stateChanged(evt); - } - } - } } /** 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 9794c37a..92abe8bf 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 @@ -34,6 +34,7 @@ import org.openslx.dozmod.gui.Gui; import org.openslx.dozmod.gui.MainWindow; import org.openslx.dozmod.gui.changemonitor.AbstractControlWrapper; import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor; +import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor.NotNullConstraint; import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor.TextNotEmptyConstraint; import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor.ValidationConstraint; import org.openslx.dozmod.gui.helper.DateTimeHelper; @@ -165,6 +166,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements changeMonitor.add(dtpStartDate).addConstraint(dateRangeValidator); changeMonitor.add(spnEndTime).addConstraint(dateRangeValidator); changeMonitor.add(spnStartTime).addConstraint(dateRangeValidator); + changeMonitor.add(ctlNetrulesConfigurator).addConstraint(new NotNullConstraint<List<NetRule>>("Fehlerhafte Netzwerkregeln")); changeListenerPermissions = changeMonitor.add(ctlPermissionManager); ctlLocationSelector.addToChangeMonitor(changeMonitor); ctlRunscriptConfigurator.addToChangeMonitor(changeMonitor); @@ -248,15 +250,6 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements }; chkCustomPermAdmin.addItemListener(updateDefaultPermissionListener); chkCustomPermEdit.addItemListener(updateDefaultPermissionListener); - - btnNetrules.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - List<NetRule> newNetrules = LectureNetrulesWindow.open(me, lecture.networkExceptions, changeMonitor); - if (newNetrules != null) - lecture.networkExceptions = newNetrules; - } - }); // last step, the save button btnSaveChanges.addActionListener(new ActionListener() { @@ -328,6 +321,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements ctlRunscriptConfigurator.setState(lecture.runscript); ctlNetshareConfigurator.setState(lecture.networkShares); ctlLdapFilterConfigurator.setState(lecture.ldapFilters); + ctlNetrulesConfigurator.setState(lecture.networkExceptions); txtTitle.setText(lecture.getLectureName()); lblTitleInfo.setText(lecture.getLectureName()); @@ -508,7 +502,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements ctlLocationSelector.getOnlyInSelection(), // TODO: coming "false" is Location related false, chkHasUsbAccess.isSelected()); - metadata.setNetworkExceptions(lecture.networkExceptions); + metadata.setNetworkExceptions(ctlNetrulesConfigurator.getState(false)); metadata.setNetworkShares(ctlNetshareConfigurator.getState()); metadata.setLdapFilters(ctlLdapFilterConfigurator.getState()); @@ -526,7 +520,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements if (changeListenerPermissions.isCurrentlyChanged()) { try { ThriftManager.getSatClient().writeLecturePermissions(Session.getSatelliteToken(), - lecture.lectureId, customPermissions); + lecture.lectureId, ctlPermissionManager.getPermissions()); LOGGER.info("Successfully save new permissions"); } catch (TException e) { ThriftError.showMessage(JOptionPane.getFrameForComponent(this), LOGGER, e, diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureNetrulesWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureNetrulesWindow.java deleted file mode 100644 index e5b1659b..00000000 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureNetrulesWindow.java +++ /dev/null @@ -1,124 +0,0 @@ -package org.openslx.dozmod.gui.window; - -import java.awt.Window; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; -import java.util.ArrayList; -import java.util.List; - -import javax.swing.event.ChangeListener; - -import org.apache.log4j.Logger; -import org.openslx.bwlp.thrift.iface.NetRule; -import org.openslx.dozmod.gui.Gui; -import org.openslx.dozmod.gui.Gui.GuiCallable; -import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor; -import org.openslx.dozmod.gui.helper.MessageType; -import org.openslx.dozmod.gui.helper.UiFeedback; -import org.openslx.dozmod.gui.window.layout.LectureNetrulesWindowLayout; - -public class LectureNetrulesWindow extends LectureNetrulesWindowLayout - implements UiFeedback { - - private static final long serialVersionUID = -1970717955867180231L; - private static final Logger LOGGER = Logger - .getLogger(LectureNetrulesWindow.class); - private boolean apply = false; - private List<NetRule> newRules = null; - - public LectureNetrulesWindow(Window modalParent, - List<NetRule> netrules, DialogChangeMonitor changeMonitor) { - super(modalParent); - - btnSave.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - newRules = ctlNetrulesConfigurator.getState(false); - if (newRules == null) { - return; - } - apply = true; - dispose(); - } - }); - // listeners for the buttons - btnClose.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - safeClose(); - } - }); - ctlNetrulesConfigurator.setState(netrules); - changeMonitor.add(this).reset(); - } - - /** - * @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 List<NetRule> runAndReturn() { - setVisible(true); - if (!apply) - return null; - return newRules != null ? newRules : new ArrayList<NetRule>(); - } - - /** - * Static method to open this window with - * - * @param modalParent - * parent to this window - * @param changeMonitor If you want to track changes... - * @param locations - * locations to preselect in the LocationSelector - * @return forwards the return value of the window itself: list of ids of - * the selected locations - */ - public static List<NetRule> open(final Window modalParent, - final List<NetRule> netrules, final DialogChangeMonitor changeMonitor) { - return Gui.syncExec(new GuiCallable<List<NetRule>>() { - @Override - public List<NetRule> run() { - return new LectureNetrulesWindow(modalParent, netrules, changeMonitor) - .runAndReturn(); - } - }); - } - - @Override - public boolean wantConfirmQuit() { - return false; - } - - @Override - public void escapePressed() { - safeClose(); - } - private void safeClose() { - if (newRules != null) { - if (Gui.showMessageBox("Änderungen werden verworfen. Wollen Sie wirklich abbrechen?", MessageType.ERROR_RETRY, LOGGER, null)) { - dispose(); - } - } else { - dispose(); - } - } - - @Override - public List<NetRule> getState() { - return ctlNetrulesConfigurator.getState(true); - } - - @Override - public void addChangeListener(final ChangeListener l) { - addWindowListener(new WindowAdapter() { - @Override - public void windowClosed(WindowEvent e) { - l.stateChanged(null); - } - }); - } - -} 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 1508d95e..091c1133 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 @@ -30,6 +30,7 @@ import org.openslx.bwlp.thrift.iface.ImageVersionDetails; import org.openslx.dozmod.gui.Gui; import org.openslx.dozmod.gui.configurator.LdapFilterConfigurator; import org.openslx.dozmod.gui.configurator.LecturePermissionConfigurator; +import org.openslx.dozmod.gui.configurator.NetrulesConfigurator; import org.openslx.dozmod.gui.configurator.NetshareConfigurator; import org.openslx.dozmod.gui.configurator.RunscriptConfigurator; import org.openslx.dozmod.gui.control.ComboBox; @@ -75,8 +76,6 @@ public abstract class LectureDetailsWindowLayout extends JDialog { protected final JTextField txtId; protected final QLabel lblUseCount; - protected final JButton btnNetrules; - protected final QLabel lblError; protected final JButton btnSaveChanges; protected final JButton btnClose; @@ -87,31 +86,25 @@ public abstract class LectureDetailsWindowLayout extends JDialog { protected final JSpinner spnStartTime; protected final JSpinner spnEndTime; - protected JTabbedPane pnlTabs; + protected final JTabbedPane pnlTabs; protected final LecturePermissionConfigurator ctlPermissionManager; protected final LocationSelector ctlLocationSelector; protected final RunscriptConfigurator ctlRunscriptConfigurator; protected final NetshareConfigurator ctlNetshareConfigurator; protected final LdapFilterConfigurator ctlLdapFilterConfigurator; - - private static final Properties pickerStrings = new Properties(); - - protected JCheckBox chkCustomPermEdit; - protected JCheckBox chkCustomPermAdmin; - protected JPanel pnlTabGeneral; - protected JPanel pnlTabInfo; - protected JPanel pnlTabRestrictions; - protected JPanel pnlTabPermissions; - protected JPanel pnlTabLocations; - protected JPanel pnlTabRunscript; - protected JPanel pnlTabNetshare; - protected JPanel pnlTabLdapFilter; - - static { - pickerStrings.put("text.today", "Heute"); - pickerStrings.put("text.month", "Monat"); - pickerStrings.put("text.year", "Jahr"); - } + protected final NetrulesConfigurator ctlNetrulesConfigurator; + + protected final JCheckBox chkCustomPermEdit; + protected final JCheckBox chkCustomPermAdmin; + protected final JPanel pnlTabGeneral; + protected final JPanel pnlTabInfo; + protected final JPanel pnlTabNetrules; + protected final JPanel pnlTabRestrictions; + protected final JPanel pnlTabPermissions; + protected final JPanel pnlTabLocations; + protected final JPanel pnlTabRunscript; + protected final JPanel pnlTabNetshare; + protected final JPanel pnlTabLdapFilter; public LectureDetailsWindowLayout(Frame modalParent) { super(modalParent, "Veranstaltungsdetails", ModalityType.APPLICATION_MODAL); @@ -171,6 +164,7 @@ public abstract class LectureDetailsWindowLayout extends JDialog { grdInfo.add(lblUseCount, 2); grdInfo.finish(true); + // Make general tab pnlTabGeneral = new JPanel(); pnlTabGeneral.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); GridManager grdGeneral = new GridManager(pnlTabGeneral, 5, true, new Insets(3, 3, 3, 3)); @@ -278,28 +272,35 @@ public abstract class LectureDetailsWindowLayout extends JDialog { grdGeneral.add(chkIsActive, 4); grdGeneral.nextRow(); grdGeneral.finish(true); - - pnlTabRestrictions = new JPanel(); - GridManager grdRestrictions = new GridManager(pnlTabRestrictions, 2, true, new Insets(9, 4, 2, 4)); + Insets descriptionInset = new Insets(2, 4, 2, 4); Insets firstInset = new Insets(12, 4, 2, 4); - + + // Network rules + pnlTabNetrules = new JPanel(); + GridManager grdNetrules = new GridManager(pnlTabNetrules, 1, true, new Insets(9, 4, 2, 4)); // "restrictions": internet access / usb access / exam chkHasInternetAccess = new JCheckBox("Netzwerk-/Internetzugriff zulassen"); - btnNetrules = new JButton("Ausnahmen..."); - grdRestrictions.add(chkHasInternetAccess).fill(true, false).expand(true, false).insets(firstInset); - grdRestrictions.add(btnNetrules).fill(true, false).expand(true, false).insets(firstInset); - grdRestrictions.nextRow(); - grdRestrictions.add( + grdNetrules.add(chkHasInternetAccess).expand(true, false).insets(firstInset); + grdNetrules.nextRow(); + grdNetrules.add( new WordWrapLabel( "Legen Sie hier fest, ob die Veranstaltung Zugriff zum Internet haben soll." - + " Unter 'Ausnahmen' können Sie bestimmte Adressen und Services" - + " ein- oder ausschließen.", false, true), 2) + + " In der Liste können Sie bestimmte Adressen und Services" + + " ein- oder ausschließen.", false, true)) .fill(true, false) .expand(true, false) .insets(descriptionInset); - grdRestrictions.nextRow(); - + grdNetrules.nextRow(); + ctlNetrulesConfigurator = new NetrulesConfigurator(); + grdNetrules.add(ctlNetrulesConfigurator).fill(true, true).expand(true, true); + grdNetrules.nextRow(); + grdNetrules.finish(false); + + // Tab restrictions + pnlTabRestrictions = new JPanel(); + GridManager grdRestrictions = new GridManager(pnlTabRestrictions, 2, true, new Insets(9, 4, 2, 4)); + chkHasUsbAccess = new JCheckBox("Externe Speichermedien zulassen"); grdRestrictions.add(chkHasUsbAccess, 2); grdRestrictions.nextRow(); @@ -399,6 +400,7 @@ public abstract class LectureDetailsWindowLayout extends JDialog { pnlTabs.addTab("Allgemein", pnlTabGeneral); if (Session.isLectureRestrictionsSupported()) { pnlTabs.addTab("Beschränkungen", pnlTabRestrictions); + pnlTabs.addTab("Firewall", pnlTabNetrules); } if (MetaDataCache.getLocations() != null && !MetaDataCache.getLocations().isEmpty()) { pnlTabs.addTab("Raumauswahl", pnlTabLocations); diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/LectureNetrulesWindowLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/LectureNetrulesWindowLayout.java deleted file mode 100644 index d6f13d8f..00000000 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/LectureNetrulesWindowLayout.java +++ /dev/null @@ -1,63 +0,0 @@ -package org.openslx.dozmod.gui.window.layout; - -import java.awt.BorderLayout; -import java.awt.Window; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; -import java.util.List; - -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 javax.swing.event.ChangeListener; - -import org.openslx.bwlp.thrift.iface.NetRule; -import org.openslx.dozmod.gui.Gui; -import org.openslx.dozmod.gui.changemonitor.ListEditorWindow; -import org.openslx.dozmod.gui.configurator.NetrulesConfigurator; - -public abstract class LectureNetrulesWindowLayout extends JDialog implements ListEditorWindow<NetRule> { - - 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 NetrulesConfigurator ctlNetrulesConfigurator; - - private final JPanel pnlBottomButtons; - protected final JButton btnSave; - protected final JButton btnClose; - - public LectureNetrulesWindowLayout(Window modalParent) { - super(modalParent, txtTitle, modalParent != null ? ModalityType.APPLICATION_MODAL - : ModalityType.MODELESS); - - // the main content widget - ctlNetrulesConfigurator = new NetrulesConfigurator(); - - // init the layout - getContentPane().setLayout(new BorderLayout()); - getContentPane().add(ctlNetrulesConfigurator, 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/wizard/layout/LectureOptionsPageLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/LectureOptionsPageLayout.java index 51ac6491..86c68e44 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 @@ -1,7 +1,6 @@ package org.openslx.dozmod.gui.wizard.layout; import javax.swing.Box; -import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JLabel; @@ -19,7 +18,6 @@ public abstract class LectureOptionsPageLayout extends WizardPage { protected final JCheckBox chkIsExam; protected final JCheckBox chkAutoUpdate; protected final JCheckBox chkIsActive; - protected final JButton btnNetrules; /** * Page for additional options of lecture @@ -27,41 +25,40 @@ 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, 3); + GridManager grid = new GridManager(this, 2); // 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, 2); + grid.add(chkAutoUpdate); grid.nextRow(); chkIsActive = new JCheckBox("Veranstaltung ist aktiv", true); grid.skip(); - grid.add(chkIsActive, 2); + grid.add(chkIsActive); grid.nextRow(); chkIsExam = new JCheckBox("Veranstaltung ist eine Prüfung", false); grid.skip(); - grid.add(chkIsExam, 2); + grid.add(chkIsExam); grid.nextRow(); - grid.add(Box.createVerticalStrut(10), 3); + grid.add(Box.createVerticalStrut(10), 2); grid.nextRow(); // second category for restrictions options JLabel lblRestriction = new JLabel("Beschränkungen"); grid.add(lblRestriction); chkInternetEnabled = new JCheckBox("Netzwerk-/Internetzugriff zulassen", true); - btnNetrules = new JButton("Ausnahmen..."); + // TODO: Hint at exception editor in lecture details window, or include here... grid.add(chkInternetEnabled).fill(true, false).expand(true, false); - grid.add(btnNetrules); grid.nextRow(); chkUsbEnabled = new JCheckBox("Speichermedien zulassen", true); grid.skip(); - grid.add(chkUsbEnabled, 2); + grid.add(chkUsbEnabled); 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 73dc407e..a9d5bcef 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 @@ -1,14 +1,8 @@ package org.openslx.dozmod.gui.wizard.page; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.util.ArrayList; import java.util.List; -import javax.swing.SwingUtilities; - import org.openslx.bwlp.thrift.iface.NetRule; -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,9 +11,8 @@ import org.openslx.dozmod.thrift.Session; @SuppressWarnings("serial") public class LectureOptionsPage extends LectureOptionsPageLayout { - private LectureOptionsPage me = this; private LectureWizardState state = null; - private List<NetRule> currentNetrules = new ArrayList<NetRule>(); + private List<NetRule> currentNetrules; private String currentRunscript = new String(""); /** @@ -32,22 +25,10 @@ public class LectureOptionsPage extends LectureOptionsPageLayout { this.currentRunscript = state.runScriptText; setPageComplete(true); - btnNetrules.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - List<NetRule> newNetrules = LectureNetrulesWindow.open( - SwingUtilities.getWindowAncestor(me), currentNetrules, null); - if (newNetrules != null) { - currentNetrules = newNetrules; - updateState(); - } - } - }); if (!Session.isLectureRestrictionsSupported()) { chkIsExam.setEnabled(false); chkInternetEnabled.setEnabled(false); chkUsbEnabled.setEnabled(false); - btnNetrules.setEnabled(false); } } |
