diff options
author | Jonathan Bauer | 2018-11-26 14:15:34 +0100 |
---|---|---|
committer | Jonathan Bauer | 2018-11-26 14:15:34 +0100 |
commit | cbeb881425e3bd24246a1f1ca198eb65f2a32485 (patch) | |
tree | 1a94951e08ca344a37c3876843fc5ab3c7b961e0 /dozentenmodul | |
parent | [client] Overhaul netrules editor (diff) | |
download | tutor-module-cbeb881425e3bd24246a1f1ca198eb65f2a32485.tar.gz tutor-module-cbeb881425e3bd24246a1f1ca198eb65f2a32485.tar.xz tutor-module-cbeb881425e3bd24246a1f1ca198eb65f2a32485.zip |
[client] netshare new features
* added "is printer" checkbox (internally saves mount point as '-')
* allow empty share names (internally mapped to '-')
* allow empty share mount points (displayed as '-')
* spaced out some form components
Diffstat (limited to 'dozentenmodul')
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/NetshareConfigurator.java | 71 | ||||
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/NetshareTable.java | 15 |
2 files changed, 64 insertions, 22 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/NetshareConfigurator.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/NetshareConfigurator.java index 6141992c..39eaf102 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/NetshareConfigurator.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/NetshareConfigurator.java @@ -47,9 +47,12 @@ public class NetshareConfigurator extends NetshareConfiguratorLayout { private final static Logger LOGGER = Logger.getLogger(NetshareConfigurator.class); private List<NetShare> shareList = null; + public static final Character EMPTY_MARKER = '-'; + public static final String PRINTER_MARKER = "<printer>"; + // 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', + private Character[] mountPoints = { EMPTY_MARKER, '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() { @@ -76,9 +79,17 @@ public class NetshareConfigurator extends NetshareConfiguratorLayout { } }); + cboNetshareMountPoint.setModel(new DefaultComboBoxModel<Character>(mountPoints)); cboNetshareMountPoint.setSelectedItem(null); + chkIsPrinter.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + cboNetshareMountPoint.setEnabled(e.getStateChange() != ItemEvent.SELECTED); + } + }); + chkIsPrinter.setSelected(false); + // combobox for share authentication types cboNetshareAuth.setModel(new DefaultComboBoxModel<NetShareAuth>(NetShareAuth.values())); cboNetshareAuth.addActionListener(new ActionListener() { @@ -111,10 +122,8 @@ public class NetshareConfigurator extends NetshareConfiguratorLayout { return; } String inputShareName = tfShareName.getText(); - if (inputShareName.isEmpty()) { - lblError.setText("Kein Anzeigename angegeben!"); - return; - } + if (inputShareName.isEmpty()) + inputShareName = String.valueOf(EMPTY_MARKER); input.displayname = inputShareName; NetShareAuth inputNetShareAuth = cboNetshareAuth @@ -147,14 +156,26 @@ public class NetshareConfigurator extends NetshareConfiguratorLayout { LOGGER.debug("Bad input, aborting."); return; } - // now check for optional mount path + // process mount point and printer check box Character inputMountPoint = cboNetshareMountPoint .getItemAt(cboNetshareMountPoint.getSelectedIndex()); - if (inputMountPoint == null) { - lblError.setText("Kein Ziel angegeben!"); - return; + + if (!chkIsPrinter.isSelected()) { + if (inputMountPoint == null) { + lblError.setText("Kein Laufwerk angegeben!"); + return; + } + input.mountpoint = String.valueOf(inputMountPoint); + } else { + if (inputMountPoint == null) + input.mountpoint = String.valueOf(EMPTY_MARKER); + else + if (!inputMountPoint.equals(EMPTY_MARKER)) + input.mountpoint = PRINTER_MARKER; + else + input.mountpoint = String.valueOf(inputMountPoint); } - input.mountpoint = inputMountPoint.toString(); + // now decide whether to create a new entry or update existing one NetShare oldEntry = tblNetshare.getSelectedItem(); if (oldEntry != null) { @@ -284,6 +305,7 @@ class NetshareConfiguratorLayout extends JPanel { protected final JTextField tfSharePath, tfShareName, tfUsername; protected final JPasswordField tfPassword; protected final JButton btnAdd, btnDel; + protected final JCheckBox chkIsPrinter; protected final JCheckBox chkShowPass; protected final ComboBox<NetShareAuth> cboNetshareAuth = new ComboBox<>(new ComboBoxRenderer<NetShareAuth>() { @Override @@ -298,37 +320,50 @@ class NetshareConfiguratorLayout extends JPanel { public String renderItem(Character letter) { if (letter == null) return null; - return letter.toString() + ":"; + return letter.equals(NetshareConfigurator.EMPTY_MARKER) ? letter.toString() : letter.toString() + ":"; } }); public NetshareConfiguratorLayout() { - GridManager grid = new GridManager(this, 5, true, new Insets(3, 3, 3, 3)); + GridManager grid = new GridManager(this, 1, true, new Insets(3, 3, 3, 3)); // top info panel - grid.add(new JLabel(txtNetshareDesc), 5).fill(true, false).expand(true, false); + grid.add(new JLabel(txtNetshareDesc)).fill(true, false).expand(true, false); grid.nextRow(); // middle netshare list - grid.add(new QScrollPane(tblNetshare), 5).fill(true, true).expand(true, true); + grid.add(new QScrollPane(tblNetshare)).fill(true, true).expand(true, true); grid.nextRow(); JPanel pnlNewShare = new JPanel(); GridManager gridNewShare = new GridManager(pnlNewShare, 6, true); pnlNewShare.setBorder(BorderFactory.createTitledBorder("Details")); + + JPanel pnlSharePath = new JPanel(); + pnlSharePath.setLayout(new BoxLayout(pnlSharePath, BoxLayout.LINE_AXIS)); + lblSharePath = new QLabel("Pfad"); gridNewShare.add(lblSharePath); + tfSharePath = new JTextField(); - gridNewShare.add(tfSharePath, 5).fill(true, false).expand(true, false); + pnlSharePath.add(tfSharePath); + pnlSharePath.add(Box.createGlue()); + pnlSharePath.add(Box.createHorizontalStrut(5)); + chkIsPrinter = new JCheckBox("Drucker"); + pnlSharePath.add(chkIsPrinter); + pnlSharePath.add(Box.createHorizontalStrut(5)); + gridNewShare.add(pnlSharePath, 5).fill(true, false).expand(true, false); gridNewShare.nextRow(); // bottom form to add a new share lblShareName = new QLabel("Anzeigename"); - lblMountPoint = new QLabel("Ziel"); + lblMountPoint = new QLabel("Laufwerk"); tfShareName = new JTextField(); // extra panel for fancy layout purposes... JPanel pnlShareName = new JPanel(); pnlShareName.setLayout(new BoxLayout(pnlShareName, BoxLayout.LINE_AXIS)); pnlShareName.add(lblShareName); pnlShareName.add(tfShareName); + pnlShareName.add(Box.createHorizontalStrut(3)); pnlShareName.add(lblMountPoint); + pnlShareName.add(Box.createHorizontalStrut(3)); pnlShareName.add(cboNetshareMountPoint); gridNewShare.add(lblShareName); gridNewShare.add(pnlShareName, 5).fill(true, false).expand(true, false); @@ -353,7 +388,7 @@ class NetshareConfiguratorLayout extends JPanel { pnlShowPass.add(chkShowPass, BorderLayout.LINE_END); gridNewShare.add(pnlShowPass, 6).fill(true, false).expand(true, false); gridNewShare.nextRow(); - grid.add(pnlNewShare, 5).fill(true, false).expand(true, false); + grid.add(pnlNewShare).fill(true, false).expand(true, false); grid.nextRow(); // bottom panel for right-aligned button... JPanel pnlButtonAdd = new JPanel(); @@ -366,7 +401,7 @@ class NetshareConfiguratorLayout extends JPanel { 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.add(pnlButtonAdd).fill(true, false).expand(true, false); grid.finish(false); } } diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/NetshareTable.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/NetshareTable.java index adeae987..7284f3ed 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/NetshareTable.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/NetshareTable.java @@ -2,6 +2,7 @@ package org.openslx.dozmod.gui.control.table; import org.openslx.bwlp.thrift.iface.NetShare; import org.openslx.bwlp.thrift.iface.NetShareAuth; +import org.openslx.dozmod.gui.configurator.NetshareConfigurator; import org.openslx.dozmod.thrift.Sorters; import org.openslx.dozmod.util.FormatHelper; @@ -11,7 +12,8 @@ public class NetshareTable extends ListTable<NetShare> { public static final ListTableColumn COL_NAME = new ListTableColumn("Name"); public static final ListTableColumn COL_MOUNT = new ListTableColumn("Ziel"); public static final ListTableColumn COL_PATH = new ListTableColumn("Pfad"); - public static final ListTableColumn COL_AUTH = new ListTableColumn("Authentifizierung", Sorters.netShareAuth); + public static final ListTableColumn COL_AUTH = new ListTableColumn("Authentifizierung", + Sorters.netShareAuth); public static final ListTableColumn COL_USER = new ListTableColumn("Username"); public static final ListTableColumn COL_PASSWORD = new ListTableColumn("Passwort"); @@ -35,13 +37,18 @@ public class NetshareTable extends ListTable<NetShare> { return item.password; throw new IndexOutOfBoundsException(); } - + @Override public Object modelValueToDisplayFormat(Object object, ListTableColumn column) { if (column == COL_NAME) return (String) object; - if (column == COL_MOUNT) - return (String) object + ":"; + if (column == COL_MOUNT) { + String input = (String) object; + if (!input.equals(String.valueOf(NetshareConfigurator.EMPTY_MARKER)) + && !input.equals(NetshareConfigurator.PRINTER_MARKER)) + input += ":"; + return input; + } if (column == COL_PATH) return (String) object; if (column == COL_AUTH) { |