From 2a0f5ace8085fbd10fa2b208e46a99e2f7a8dd7f Mon Sep 17 00:00:00 2001 From: ralph isenmann Date: Wed, 17 Feb 2021 16:50:20 +0100 Subject: [client] Container Bind Mount: Change Input to DropDown User can now only select a given Selection for bind mount source --- .../ContainerBindMountConfigurator.java | 7 ++++--- .../gui/window/ContainerBindMountWindow.java | 12 ++++++++---- .../layout/ContainerBindMountWindowLayout.java | 22 ++++++++++++++++++++-- 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/ContainerBindMountConfigurator.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/ContainerBindMountConfigurator.java index 961bbc29..630ef571 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/ContainerBindMountConfigurator.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/ContainerBindMountConfigurator.java @@ -38,12 +38,13 @@ public class ContainerBindMountConfigurator extends JPanel grid.nextRow(); JPanel buttonPanel = new JPanel(); - GridManager gridButtonPanel = new GridManager(buttonPanel, 3); buttonPanel.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.LINE_AXIS)); - JButton btnAddBindMount = new JButton(I18n.CONFIGURATOR.getString("ContainerBindMount.Button.AddBindMount.text")); - JButton btnDelBindMount = new JButton(I18n.CONFIGURATOR.getString("ContainerBindMount.Button.DeleteBindMount.text")); + JButton btnAddBindMount = new JButton( + I18n.CONFIGURATOR.getString("ContainerBindMount.Button.AddBindMount.text")); + JButton btnDelBindMount = new JButton( + I18n.CONFIGURATOR.getString("ContainerBindMount.Button.DeleteBindMount.text")); // add glue box to move Buttons to the right border. buttonPanel.add(Box.createGlue()); diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ContainerBindMountWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ContainerBindMountWindow.java index 62f8514e..e261d99a 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ContainerBindMountWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ContainerBindMountWindow.java @@ -8,6 +8,8 @@ import org.openslx.dozmod.model.ContainerBindMount; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; import java.util.ArrayList; import java.util.List; @@ -31,8 +33,8 @@ public class ContainerBindMountWindow extends ContainerBindMountWindowLayout { dispose(); } }); - this.txtBmSource.getDocument().addDocumentListener(new TextChangeListener() { - @Override public void changed() { + this.cboSourceMountPoint.addItemListener(new ItemListener() { + @Override public void itemStateChanged(ItemEvent e) { isInputComplete(); } }); @@ -46,7 +48,8 @@ public class ContainerBindMountWindow extends ContainerBindMountWindowLayout { private boolean isInputComplete() { btnSave.setEnabled(false); - if (txtBmSource == null || txtBmSource.getText().isEmpty()) { + + if (cboSourceMountPoint == null || cboSourceMountPoint.getSelectedIndex() == 0) { header.updateStatus("Source Path is Missing"); return false; } @@ -61,7 +64,8 @@ public class ContainerBindMountWindow extends ContainerBindMountWindowLayout { private void saveEntry() { ContainerBindMount bindMount = new ContainerBindMount(); - bindMount.setSource(this.txtBmSource.getText()); + bindMount.setSource( + ContainerBindMountWindowLayout.SOURCE_MOUNT_POINTS[cboSourceMountPoint.getSelectedIndex()]); bindMount.setTarget(this.txtBmTarget.getText()); bindMount.setOptions(this.txtBmOptions.getText()); diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ContainerBindMountWindowLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ContainerBindMountWindowLayout.java index dcfe1dd4..54befd60 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ContainerBindMountWindowLayout.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ContainerBindMountWindowLayout.java @@ -1,6 +1,7 @@ package org.openslx.dozmod.gui.window.layout; import org.openslx.dozmod.gui.Gui; +import org.openslx.dozmod.gui.control.ComboBox; import org.openslx.dozmod.gui.control.QLabel; import org.openslx.dozmod.gui.helper.GridManager; import org.openslx.dozmod.gui.helper.StatusHeader; @@ -22,22 +23,39 @@ public class ContainerBindMountWindowLayout extends JDialog { protected final JButton btnSave; protected final JButton btnCancel; + protected static final String EMPTY_MARKER = "-"; + protected static final String[] TAGS = { "USER_HOME", "USER_TMP" }; + protected static String[] SOURCE_MOUNT_POINTS = { EMPTY_MARKER, TAGS[0], TAGS[1], "D", "E", "F", "G", "H", + "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" }; + + protected final ComboBox cboSourceMountPoint = new ComboBox<>( + new ComboBox.ComboBoxRenderer() { + @Override public String renderItem(String letter) { + if (letter == null) + return null; + return letter; + } + }); + public ContainerBindMountWindowLayout(Window modalParent) { super(modalParent, title, ModalityType.APPLICATION_MODAL); setLayout(new BorderLayout()); - header = new StatusHeader(getContentPane() , "Source and Target Path Required"); + header = new StatusHeader(getContentPane(), "Source and Target Path Required"); JPanel contentPanel = new JPanel(); add(contentPanel, BorderLayout.CENTER); GridManager grid = new GridManager(contentPanel, 2, true, new Insets(2, 2, 2, 2)); lblBmSource = new QLabel("Source"); + txtBmSource = new JTextField(); + cboSourceMountPoint.setModel(new DefaultComboBoxModel<>(SOURCE_MOUNT_POINTS)); + cboSourceMountPoint.setSelectedItem(SOURCE_MOUNT_POINTS[0]); grid.add(lblBmSource); - grid.add(txtBmSource).fill(true, false).expand(true, false); + grid.add(cboSourceMountPoint).fill(true, false).expand(true, false); grid.nextRow(); lblBmTarget = new QLabel("Target"); -- cgit v1.2.3-55-g7522