From b47ad995a65ba9cccd7fe2b7f889a4e83bbb11cb Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Thu, 7 Sep 2017 16:55:27 +0200 Subject: [client/server] remove GUEST_USER from netshares * added some sanity checks before adding a new network share in the table * added user feedback error message for invalid input * fixed text fields growing/shrinking depending on input --- .../dozmod/gui/control/NetshareConfigurator.java | 74 ++++++++++++---------- .../java/org/openslx/dozmod/util/FormatHelper.java | 4 +- 2 files changed, 43 insertions(+), 35 deletions(-) (limited to 'dozentenmodul/src') 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 ac10e2bb..d36bc691 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 @@ -1,9 +1,12 @@ package org.openslx.dozmod.gui.control; import java.awt.BorderLayout; +import java.awt.Color; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.ArrayList; @@ -43,7 +46,6 @@ public class NetshareConfigurator extends NetshareConfiguratorLayout { private static final long serialVersionUID = -3336605759245603655L; private final static Logger LOGGER = Logger.getLogger(NetshareConfigurator.class); - private List tblNetshareData = null; public NetshareConfigurator() { @@ -61,16 +63,17 @@ public class NetshareConfigurator extends NetshareConfiguratorLayout { @Override public void actionPerformed(ActionEvent e) { NetShareAuth selectedAuth = cboNetshareAuth.getItemAt(cboNetshareAuth.getSelectedIndex()); - boolean activate = selectedAuth == NetShareAuth.SPECIAL_USER; + if (selectedAuth == null) + return; + boolean activate = selectedAuth == NetShareAuth.OTHER_USER; // username field is needed to either special or guest user - tfUsername.setEnabled(activate || selectedAuth == NetShareAuth.GUEST_USER); - lblUsername.setEnabled(activate || selectedAuth == NetShareAuth.GUEST_USER); + tfUsername.setEnabled(activate); + lblUsername.setEnabled(activate); tfPassword.setEnabled(activate); lblPassword.setEnabled(activate); chkShowPass.setEnabled(activate); } }); - tfUsername.setEnabled(false); lblUsername.setEnabled(false); tfPassword.setEnabled(false); @@ -84,42 +87,48 @@ public class NetshareConfigurator extends NetshareConfiguratorLayout { NetShare input = new NetShare(); NetShareAuth inputNetShareAuth = cboNetshareAuth.getItemAt(cboNetshareAuth.getSelectedIndex()); if (inputNetShareAuth == null) { - LOGGER.error("Could not get the network share auth type from the combobox!"); + lblError.setText("Kein Authentifizierungstyp angegeben!"); return; } input.auth = inputNetShareAuth; input.path = tfSharePath.getText(); if (input.path == null || input.path.isEmpty()) { - LOGGER.error("Missing/empty network share URI!"); + lblError.setText("Kein Pfad angegeben!"); return; } switch (inputNetShareAuth) { - case GUEST_USER: - // guest mode requires guest account but not password - input.username = tfUsername.getText(); - break; case LOGIN_USER: + // this uses the bwLehrpool client's logged in user + // we don't need to have anything break; - case SPECIAL_USER: + case OTHER_USER: // save given username/password input.username = tfUsername.getText(); char[] inputPassword = tfPassword.getPassword(); input.password = new String(inputPassword); - Arrays.fill(inputPassword, '0'); + Arrays.fill(inputPassword, '0'); // prolly not relevant/sufficiant... + // if password is set but no username, error + if (!input.password.isEmpty() && input.username.isEmpty()) { + lblError.setText("Kein Nutzername angegeben!"); + return; + } break; default: input = null; break; } if (input == null) { - LOGGER.debug("Input bad, aborting."); + lblError.setText("Interner Fehler"); + LOGGER.debug("Bad input, aborting."); return; } // now decide whether to create a new entry or update existing one - if (tblNetshare.getSelectedItem() != null) { + NetShare oldEntry = tblNetshare.getSelectedItem(); + if (oldEntry != null) { // editing existing one, delete it from the internal data - if (!tblNetshareData.remove(tblNetshare.getSelectedItem())) { + if (!tblNetshareData.remove(oldEntry)) { + lblError.setText("Änderung fehlgeschlagen!"); LOGGER.debug("Failed to remove selected share for replacement!"); return; } @@ -128,9 +137,11 @@ public class NetshareConfigurator extends NetshareConfiguratorLayout { // creating a new one, either way add it to the list and update // the table, if its not present already if (tblNetshareData.contains(input)) { + lblError.setText("Existiert bereits!"); LOGGER.error("Network share already in the list, aborting."); return; } + lblError.setText(null); tblNetshareData.add(input); tblNetshare.getModel().setData(tblNetshareData); } @@ -254,7 +265,7 @@ class NetshareConfiguratorLayout extends JPanel { private final static String txtNetshareDesc = "Hier können Sie Netzlaufwerke angeben," + " die automatisch beim Start der Veranstaltung eingebunden werden sollen."; - protected QLabel lblShareAuth, lblSharePath, lblUsername, lblPassword; + protected QLabel lblShareAuth, lblSharePath, lblUsername, lblPassword, lblError; protected NetshareTable tblNetshare = new NetshareTable(); protected JTextField tfSharePath, tfUsername; @@ -280,34 +291,28 @@ class NetshareConfiguratorLayout extends JPanel { // middle netshare list grid.add(new QScrollPane(tblNetshare), 5).fill(true, true).expand(true, true); grid.nextRow(); - JPanel pnlButtonDelete = new JPanel(); - pnlButtonDelete.setLayout(new BoxLayout(pnlButtonDelete, BoxLayout.LINE_AXIS)); - btnDel = new JButton("Entfernen"); - pnlButtonDelete.add(Box.createGlue()); - pnlButtonDelete.add(btnDel, BorderLayout.LINE_END); - grid.add(pnlButtonDelete, 5).fill(true, false).expand(true, false); - grid.nextRow(); + JPanel pnlNewShare = new JPanel(); GridManager gridNewShare = new GridManager(pnlNewShare, 5, true); - pnlNewShare.setBorder(BorderFactory.createTitledBorder("Neues Netzlaufwerk")); + pnlNewShare.setBorder(BorderFactory.createTitledBorder("Details")); // bottom form to add a new share lblShareAuth = new QLabel("Authentifizierung"); gridNewShare.add(lblShareAuth); - gridNewShare.add(cboNetshareAuth, 4).fill(true, false).expand(true, false); // User (optional) + gridNewShare.add(cboNetshareAuth, 4).fill(true, false).expand(true, false); gridNewShare.nextRow(); lblSharePath = new QLabel("URI"); gridNewShare.add(lblSharePath); tfSharePath = new JTextField(); - gridNewShare.add(tfSharePath, 4).fill(true, false).expand(true, false); // User (optional) + gridNewShare.add(tfSharePath, 4).fill(true, false).expand(true, false); gridNewShare.nextRow(); lblUsername = new QLabel("Username"); gridNewShare.add(lblUsername); - tfUsername = new JTextField(); - gridNewShare.add(tfUsername, 1).fill(true, false).expand(true, false); // Password (optional) + tfUsername = new JTextField(20); + gridNewShare.add(tfUsername, 1).fill(true, false).expand(true, false); lblPassword = new QLabel("Passwort:"); gridNewShare.add(lblPassword); - tfPassword = new JPasswordField(); - gridNewShare.add(tfPassword, 2).fill(true, false).expand(true, false); // Password (optional) + tfPassword = new JPasswordField(20); + gridNewShare.add(tfPassword, 2).fill(true, false).expand(true, false); gridNewShare.nextRow(); chkShowPass = new JCheckBox("Passwort anzeigen"); JPanel pnlHidePass = new JPanel(); @@ -318,12 +323,17 @@ class NetshareConfiguratorLayout extends JPanel { gridNewShare.nextRow(); grid.add(pnlNewShare, 5).fill(true, false).expand(true, false); grid.nextRow(); - // bottom panels for right-aligned button... + // bottom panel for right-aligned button... JPanel pnlButtonAdd = new JPanel(); pnlButtonAdd.setLayout(new BoxLayout(pnlButtonAdd, BoxLayout.LINE_AXIS)); btnAdd = new JButton("Hinzufügen"); + btnDel = new JButton("Entfernen"); + lblError = new QLabel(""); + lblError.setForeground(Color.RED); + pnlButtonAdd.add(lblError); pnlButtonAdd.add(Box.createGlue()); pnlButtonAdd.add(btnAdd, BorderLayout.LINE_END); + pnlButtonAdd.add(btnDel, BorderLayout.LINE_END); grid.add(pnlButtonAdd, 5).fill(true, false).expand(true, false); grid.finish(false); } diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/util/FormatHelper.java b/dozentenmodul/src/main/java/org/openslx/dozmod/util/FormatHelper.java index 11ad277a..f77c580f 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/util/FormatHelper.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/util/FormatHelper.java @@ -179,9 +179,7 @@ public class FormatHelper { switch (auth) { case LOGIN_USER: return "Angemeldeter Nutzer"; - case GUEST_USER: - return "Gast Nutzer"; - case SPECIAL_USER: + case OTHER_USER: return "Spezifischer Nutzer"; default: return auth.toString(); -- cgit v1.2.3-55-g7522