diff options
author | Jonathan Bauer | 2017-09-08 16:54:59 +0200 |
---|---|---|
committer | Jonathan Bauer | 2017-09-08 16:54:59 +0200 |
commit | c0cbc1b3cb20b6c86d917394bdffe9c15a74a54d (patch) | |
tree | 8343a06ad4c8f3d08c03d685b6c2456dcabf8d5b /dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/NetshareConfigurator.java | |
parent | [netshare] minor layout optimizations (diff) | |
download | tutor-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.java | 137 |
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(); |