summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/ContainerBindMountConfigurator.java
diff options
context:
space:
mode:
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/ContainerBindMountConfigurator.java')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/ContainerBindMountConfigurator.java111
1 files changed, 111 insertions, 0 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
new file mode 100644
index 00000000..302f43c1
--- /dev/null
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/ContainerBindMountConfigurator.java
@@ -0,0 +1,111 @@
+package org.openslx.dozmod.gui.configurator;
+
+import org.apache.log4j.Logger;
+import org.openslx.dozmod.gui.Gui;
+import org.openslx.dozmod.gui.changemonitor.GenericControlWindow;
+import org.openslx.dozmod.gui.control.QLabel;
+import org.openslx.dozmod.gui.control.table.ContainerBindMountTable;
+import org.openslx.dozmod.gui.control.table.QScrollPane;
+import org.openslx.dozmod.gui.helper.GridManager;
+import org.openslx.dozmod.gui.window.ContainerBindMountWindow;
+import org.openslx.dozmod.model.ContainerBindMount;
+
+import javax.swing.*;
+import javax.swing.event.ChangeListener;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.ArrayList;
+import java.util.List;
+
+public class ContainerBindMountConfigurator extends JPanel
+ implements GenericControlWindow<List<ContainerBindMount>> {
+ private final Logger LOGGER = Logger.getLogger(ContainerBindMountConfigurator.class);
+
+ private final ContainerBindMountTable bindMountTable;
+
+ public ContainerBindMountConfigurator() {
+ super();
+
+ GridManager grid = new GridManager(this, 3, false);
+ QLabel lblBindMount = new QLabel("Bind Mount Configuration");
+ bindMountTable = new ContainerBindMountTable();
+ QScrollPane scrollPaneTable = new QScrollPane(bindMountTable);
+ scrollPaneTable.setMinimumSize(Gui.getScaledDimension(0, 70));
+ scrollPaneTable.setPreferredSize(Gui.getScaledDimension(0, 70));
+ grid.add(lblBindMount).fill(false, false);
+ grid.add(scrollPaneTable, 2).fill(true, false).expand(true, false);
+ 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("Add Bind Mount");
+ JButton btnDelBindMount = new JButton("Remove Bind Mount");
+
+ // add glue box to move Buttons to the right border.
+ buttonPanel.add(Box.createGlue());
+ buttonPanel.add(btnAddBindMount);
+ buttonPanel.add(btnDelBindMount);
+
+ grid.add(Box.createGlue()).fill(true, false);
+ grid.add(buttonPanel, 2).fill(true, false);
+ grid.finish(false);
+
+ btnAddBindMount.addActionListener(new ActionListener() {
+ @Override public void actionPerformed(ActionEvent e) {
+ addBindMount();
+ }
+ });
+ btnDelBindMount.addActionListener(new ActionListener() {
+ @Override public void actionPerformed(ActionEvent e) {
+ deleteBindMount();
+ }
+ });
+ }
+
+ private void addBindMount() {
+ ContainerBindMountWindow.open(SwingUtilities.getWindowAncestor(this), bindMountTable);
+ fireUserChangeEvent();
+ }
+
+ private void deleteBindMount() {
+ if (null == bindMountTable.getSelectedItem())
+ return;
+ List<ContainerBindMount> data = new ArrayList<>(bindMountTable.getData());
+ if (data.remove(bindMountTable.getSelectedItem()))
+ LOGGER.info("Bind Mount Entry Deleted");
+ bindMountTable.setData(data, true);
+ fireUserChangeEvent();
+ }
+
+ public void setData(List<ContainerBindMount> bindMountConfig, boolean sort) {
+ bindMountTable.setData(bindMountConfig, sort);
+ }
+
+ public List<ContainerBindMount> getData() {
+ return bindMountTable.getData();
+ }
+
+
+ /* ################################
+ For dialog change monitor
+ ################################### */
+
+ @Override public List<ContainerBindMount> getState() {
+ return bindMountTable.getData();
+ }
+
+ void fireUserChangeEvent() {
+ for (ChangeListener cl : listeners) {
+ cl.stateChanged(null);
+ }
+ }
+
+ private final List<ChangeListener> listeners = new ArrayList<>(1);
+
+ @Override public void addChangeListener(ChangeListener l) {
+ listeners.add(l);
+ }
+}