diff --git a/src/MainWindow.java b/src/MainWindow.java new file mode 100644 index 0000000..0dec2d9 --- /dev/null +++ b/src/MainWindow.java @@ -0,0 +1,138 @@ +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.DefaultListModel; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTextField; + +public class MainWindow extends JFrame { + + private static final long serialVersionUID = 1L; + private IList elementList; + private JTextField txtInputField; + private JLabel lblShowText; + private JList lstElementsList; + private JButton btnAddElement, btnRemoveElement, btnClearAllElements; + DefaultListModel model; + + public MainWindow() { + this.setTitle("QueueWindow"); + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + this.setSize(300, 208); + this.setLayout(new GridBagLayout()); + GridBagConstraints c = new GridBagConstraints(); + + /* Create the button listener + * Either use one ButtonListener or use several different inner class listeners. + * Example: btnAddElement.addActionListener(new AddElementListener); */ + ButtonListener buttonListener = new ButtonListener(); + + // Left panel + JPanel leftPanel = new JPanel(new GridBagLayout()); + + // lblShowText + lblShowText = new JLabel(); + lblShowText.setText(" "); // To save a place in the grid for the label when it updates. + c.gridx = 0; + c.gridy = 0; + c.fill = GridBagConstraints.HORIZONTAL; + c.anchor = GridBagConstraints.CENTER; + leftPanel.add(lblShowText, c); + + // txtInputField + txtInputField = new JTextField(10); + c.gridy++; + leftPanel.add(txtInputField, c); + + // btnAddElement + btnAddElement = new JButton("Add"); + c.gridy++; + leftPanel.add(btnAddElement, c); + btnAddElement.addActionListener(buttonListener); + + // btnRemoveElement + btnRemoveElement = new JButton("Remove"); + c.gridy++; + leftPanel.add(btnRemoveElement, c); + btnRemoveElement.addActionListener(buttonListener); + + // btnClearAllElements + btnClearAllElements = new JButton("Clear"); + c.gridy++; + leftPanel.add(btnClearAllElements, c); + btnClearAllElements.addActionListener(buttonListener); + + // leftPanel + c.gridx = 0; + c.gridy = 0; + this.add(leftPanel, c); + + // Right panel + // lstElementsList + lstElementsList = new JList(); + lstElementsList.setFixedCellWidth(150); + JScrollPane scrollPane = new JScrollPane(); + scrollPane.setViewportView(lstElementsList); + c.gridx = 1; + c.gridy = 0; + c.fill = GridBagConstraints.BOTH; + this.add(scrollPane, c); + + elementList = new List(); + + this.setVisible(true); + } + + private class ButtonListener implements ActionListener { + @Override + public void actionPerformed(ActionEvent e) { + switch (e.getActionCommand()) { + case "Add": + addElement(); + break; + case "Remove": + removeElement(); + break; + case "Clear": + clearAllElements(); + break; + } + } + } + + private void updateList() { + model = new DefaultListModel(); + for (String s : this.elementList.getAllElementsAsStrings()) { + model.addElement(s.toString()); + } + lstElementsList.setModel(model); + } + + private void addElement() { + if (!txtInputField.getText().equals("")) { + elementList.addAt(0, txtInputField.getText()); + updateList(); + } + } + + private void removeElement() { + elementList.removeAt(elementList.find(lstElementsList.getSelectedValue())); + updateList(); + } + + private void clearAllElements() { + elementList.clear(); + updateList(); + } + + public static void main(String[] args) { + new MainWindow(); + } +}