diff options
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.java | 111 |
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); + } +} |