summaryrefslogtreecommitdiffstats
path: root/dozentenmodul
diff options
context:
space:
mode:
authorJonathan Bauer2018-11-26 14:15:34 +0100
committerJonathan Bauer2018-11-26 14:15:34 +0100
commitcbeb881425e3bd24246a1f1ca198eb65f2a32485 (patch)
tree1a94951e08ca344a37c3876843fc5ab3c7b961e0 /dozentenmodul
parent[client] Overhaul netrules editor (diff)
downloadtutor-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.java71
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/NetshareTable.java15
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) {