Newer
Older
Assignment2B / src / MainWindow.java
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<String> elementList;
	private JTextField txtInputField;
	private JLabel lblShowText;
	private JList<String> lstElementsList;
	private JButton btnAddElement, btnRemoveElement, btnClearAllElements;
	DefaultListModel<String> 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<String>();
		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<String>();
		
		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<String>();
		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();
	}
}