package org.openslx.dozmod.gui.window; import org.openslx.dozmod.gui.control.table.ContainerBindMountTable; import org.openslx.dozmod.gui.helper.TextChangeListener; import org.openslx.dozmod.gui.window.layout.ContainerBindMountWindowLayout; 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; public class ContainerBindMountWindow extends ContainerBindMountWindowLayout { /** * Version for serialization. */ private static final long serialVersionUID = -399726779412965808L; private final ContainerBindMountTable bindMountTable; public ContainerBindMountWindow(Window modalParent, ContainerBindMountTable bindMountTable) { super(modalParent); this.bindMountTable = bindMountTable; this.btnSave.setEnabled(false); this.btnSave.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { saveEntry(); } }); this.btnCancel.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dispose(); } }); this.cboSourceMountPoint.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { isInputComplete(); } }); this.txtBmTarget.getDocument().addDocumentListener(new TextChangeListener() { @Override public void changed() { isInputComplete(); } }); } private boolean isInputComplete() { btnSave.setEnabled(false); if (cboSourceMountPoint == null || cboSourceMountPoint.getSelectedIndex() == 0) { header.updateStatus("Source Path is Missing"); return false; } if (txtBmTarget == null || txtBmTarget.getText().isEmpty()) { header.updateStatus("Target Path is Missing"); return false; } header.updateStatus("Input Completed"); btnSave.setEnabled(true); return true; } private void saveEntry() { ContainerBindMount bindMount = new ContainerBindMount(); bindMount.setSource( ContainerBindMountWindowLayout.SOURCE_MOUNT_POINTS[cboSourceMountPoint.getSelectedIndex()]); bindMount.setTarget(this.txtBmTarget.getText()); bindMount.setOptions(this.txtBmOptions.getText()); List oldData = bindMountTable.getData(); List data = new ArrayList<>(oldData); data.add(bindMount); bindMountTable.setData(data, true); dispose(); } public static void open(Window modalParent, ContainerBindMountTable bindMountTable) { ContainerBindMountWindow win = new ContainerBindMountWindow(modalParent, bindMountTable); win.setVisible(true); } }