summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/NetshareConfigurator.java
diff options
context:
space:
mode:
authorJonathan Bauer2017-09-08 16:54:59 +0200
committerJonathan Bauer2017-09-08 16:54:59 +0200
commitc0cbc1b3cb20b6c86d917394bdffe9c15a74a54d (patch)
tree8343a06ad4c8f3d08c03d685b6c2456dcabf8d5b /dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/NetshareConfigurator.java
parent[netshare] minor layout optimizations (diff)
downloadtutor-module-c0cbc1b3cb20b6c86d917394bdffe9c15a74a54d.tar.gz
tutor-module-c0cbc1b3cb20b6c86d917394bdffe9c15a74a54d.tar.xz
tutor-module-c0cbc1b3cb20b6c86d917394bdffe9c15a74a54d.zip
[client/server] support for mountpoint/displayname
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/NetshareConfigurator.java')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/NetshareConfigurator.java137
1 files changed, 89 insertions, 48 deletions
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 54aacdeb..5ae805db 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
@@ -38,7 +38,7 @@ import org.openslx.dozmod.gui.helper.GridManager;
import org.openslx.dozmod.util.FormatHelper;
/**
- * Widget for netrules configuration of lectures
+ * Widget for network share configuration of lectures
*/
public class NetshareConfigurator extends NetshareConfiguratorLayout {
@@ -46,8 +46,13 @@ public class NetshareConfigurator extends NetshareConfiguratorLayout {
private final static Logger LOGGER = Logger.getLogger(NetshareConfigurator.class);
private List<NetShare> tblNetshareData = null;
+ // mount points / win drive letters - ideally, we would check whether the image is linux or windows based
+ // and either show a drive selection list like this one, or a textfield for a user-defined mount point...
+ private Character[] mountPoints = { 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };
public NetshareConfigurator() {
+
super();
+
tblNetshare.getModel().addTableModelListener(new TableModelListener() {
@Override
public void tableChanged(TableModelEvent e) {
@@ -55,6 +60,38 @@ public class NetshareConfigurator extends NetshareConfiguratorLayout {
}
});
+ tblNetshare.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
+ @Override
+ public void valueChanged(ListSelectionEvent e) {
+ NetShare item = tblNetshare.getSelectedItem();
+ // ugly block-wise sets, but only one test needed compared to
+ // doing lots of item != null ? ... : ...
+ if (item != null) {
+ // share from the list is selected: fill bottom form and change "Add" to "Apply"
+ btnDel.setEnabled(true);
+ tfSharePath.setText(item.path);
+ tfShareName.setText(item.displayname);
+ tfUsername.setText(item.username);
+ tfPassword.setText(item.password);
+ cboNetshareAuth.setSelectedItem(item.auth);
+ cboNetshareMountPoint.setSelectedItem(Character.valueOf(item.mountpoint.charAt(0)));
+ btnAdd.setText("Ändern");
+ } else {
+ btnDel.setEnabled(false);
+ tfSharePath.setText(null);
+ tfShareName.setText(null);
+ tfUsername.setText(null);
+ tfPassword.setText(null);
+ cboNetshareAuth.setSelectedItem(null);
+ cboNetshareMountPoint.setSelectedItem(null);
+ btnAdd.setText("Hinzufügen");
+ }
+ }
+ });
+
+ cboNetshareMountPoint.setModel(new DefaultComboBoxModel<Character>(mountPoints));
+ cboNetshareMountPoint.setSelectedItem(null);
+
// combobox for share authentication types
cboNetshareAuth.setModel(new DefaultComboBoxModel<NetShareAuth>(NetShareAuth.values()));
cboNetshareAuth.addActionListener(new ActionListener() {
@@ -72,17 +109,22 @@ public class NetshareConfigurator extends NetshareConfiguratorLayout {
chkShowPass.setEnabled(activate);
}
});
- tfUsername.setEnabled(false);
- lblUsername.setEnabled(false);
- tfPassword.setEnabled(false);
- lblPassword.setEnabled(false);
- chkShowPass.setEnabled(false);
+ cboNetshareAuth.setSelectedItem(null);
+
btnAdd.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// check if we are editing an existing share entry or
// creating a new one, check for input either way
NetShare input = new NetShare();
+
+ String inputShareName = tfShareName.getText();
+ if (inputShareName.isEmpty()) {
+ lblError.setText("Kein Anzeigename angegeben!");
+ return;
+ }
+ input.displayname = inputShareName;
+
NetShareAuth inputNetShareAuth = cboNetshareAuth.getItemAt(cboNetshareAuth.getSelectedIndex());
if (inputNetShareAuth == null) {
lblError.setText("Kein Authentifizierungstyp angegeben!");
@@ -120,7 +162,11 @@ public class NetshareConfigurator extends NetshareConfiguratorLayout {
LOGGER.debug("Bad input, aborting.");
return;
}
-
+ // now check for optional mount path
+ Character inputMountPoint = cboNetshareMountPoint.getItemAt(cboNetshareMountPoint.getSelectedIndex());
+ if (inputMountPoint != null) {
+ input.mountpoint = inputMountPoint.toString() + ":";
+ }
// now decide whether to create a new entry or update existing one
NetShare oldEntry = tblNetshare.getSelectedItem();
if (oldEntry != null) {
@@ -179,31 +225,11 @@ public class NetshareConfigurator extends NetshareConfiguratorLayout {
}
}
});
-
- tblNetshare.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
- @Override
- public void valueChanged(ListSelectionEvent e) {
- NetShare item = tblNetshare.getSelectedItem();
- // ugly block-wise sets, but only one test needed compared to
- // doing lots of item != null ? ... : ...
- if (item != null) {
- // share from the list is selected: fill bottom form and change "Add" to "Apply"
- btnDel.setEnabled(true);
- tfSharePath.setText(item.path);
- tfUsername.setText(item.username);
- tfPassword.setText(item.password);
- cboNetshareAuth.setSelectedItem(item.auth);
- btnAdd.setText("Ändern");
- } else {
- btnDel.setEnabled(false);
- tfSharePath.setText(null);
- tfUsername.setText(null);
- tfPassword.setText(null);
- cboNetshareAuth.setSelectedItem(null);
- btnAdd.setText("Hinzufügen");
- }
- }
- });
+ chkShowPass.setEnabled(false);
+ tfUsername.setEnabled(false);
+ lblUsername.setEnabled(false);
+ tfPassword.setEnabled(false);
+ lblPassword.setEnabled(false);
}
public List<NetShare> getState() {
@@ -263,10 +289,10 @@ 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, lblError;
-
+
+ protected QLabel lblShareAuth, lblSharePath, lblShareName, lblMountPoint, lblUsername, lblPassword, lblError;
protected NetshareTable tblNetshare = new NetshareTable();
- protected JTextField tfSharePath, tfUsername;
+ protected JTextField tfSharePath, tfShareName, tfUsername;
protected JPasswordField tfPassword;
protected JButton btnAdd, btnDel;
protected JCheckBox chkShowPass;
@@ -278,8 +304,14 @@ class NetshareConfiguratorLayout extends JPanel {
return FormatHelper.netShareAuthName(item);
}
});
-
-
+ protected ComboBox<Character> cboNetshareMountPoint = new ComboBox<>(new ComboBoxRenderer<Character>() {
+ @Override
+ public String renderItem(Character letter) {
+ if (letter == null)
+ return null;
+ return letter.toString() + ":";
+ }
+ });
public NetshareConfiguratorLayout() {
GridManager grid = new GridManager(this, 5, true, new Insets(3, 3, 3, 3));
@@ -293,31 +325,40 @@ class NetshareConfiguratorLayout extends JPanel {
JPanel pnlNewShare = new JPanel();
GridManager gridNewShare = new GridManager(pnlNewShare, 5, true);
pnlNewShare.setBorder(BorderFactory.createTitledBorder("Details"));
+ lblSharePath = new QLabel("Pfad");
+ gridNewShare.add(lblSharePath);
+ tfSharePath = new JTextField();
+ gridNewShare.add(tfSharePath, 4).fill(true, false).expand(true, false);
+ gridNewShare.nextRow();
// bottom form to add a new share
+ lblShareName = new QLabel("Anzeigename");
+ lblMountPoint = new QLabel("Ziel");
+ tfShareName = new JTextField();
+
+ gridNewShare.add(lblShareName);
+ gridNewShare.add(tfShareName, 2).fill(true, false).expand(true, false);
+ gridNewShare.add(lblMountPoint);
+ gridNewShare.add(cboNetshareMountPoint);
+ gridNewShare.nextRow();
lblShareAuth = new QLabel("Authentifizierung");
gridNewShare.add(lblShareAuth);
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);
- gridNewShare.nextRow();
lblUsername = new QLabel("Username");
gridNewShare.add(lblUsername);
tfUsername = new JTextField(20);
gridNewShare.add(tfUsername, 1).fill(true, false).expand(true, false);
- lblPassword = new QLabel("Passwort:");
+ lblPassword = new QLabel("Passwort");
gridNewShare.add(lblPassword);
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();
- pnlHidePass.setLayout(new BoxLayout(pnlHidePass, BoxLayout.LINE_AXIS));
- pnlHidePass.add(Box.createGlue());
- pnlHidePass.add(chkShowPass, BorderLayout.LINE_END);
- gridNewShare.add(pnlHidePass, 5).fill(true, false).expand(true, false);
+ JPanel pnlShowPass = new JPanel();
+ pnlShowPass.setLayout(new BoxLayout(pnlShowPass, BoxLayout.LINE_AXIS));
+ pnlShowPass.add(Box.createGlue());
+ pnlShowPass.add(chkShowPass, BorderLayout.LINE_END);
+ gridNewShare.add(pnlShowPass, 5).fill(true, false).expand(true, false);
gridNewShare.nextRow();
grid.add(pnlNewShare, 5).fill(true, false).expand(true, false);
grid.nextRow();