package senseiTests.domainsTest; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; class ColoursInfoPanel extends JPanel implements ActionListener { public ColoursInfoPanel(UIFrame parent, StateChanger stateChanger, int identity, String stType) { super(new BorderLayout()); this.uiFrame = parent; this.setBorder(BorderFactory.createTitledBorder("Subgroup " + identity + " - " + stType)); this.stateChanger=stateChanger; withState=false; init(); enableUserInteraction(false); } public void enableUserInteraction() { setStatus(""); enableUserInteraction(true); } public void colourChangePropagated() { enableUserInteraction(); } public void setStatus(String st) { SwingThreadedChanger.setText(status, st); } public void setState(String state) { SwingThreadedChanger.setText(this.state, state); } public void showError(Exception ex) { uiFrame.showError(ex); } void init() { Box box = Box.createVerticalBox(); box.add(createStateRow()); box.add(Box.createVerticalStrut(5)); box.add(createButtonsRow()); add(box); } Component createStateRow() { Box box = Box.createHorizontalBox(); box.add(new JLabel("State: ")); state = new JTextField(); state.setEditable(false); state.setBorder(BorderFactory.createLoweredBevelBorder()); box.add(state); return box; } Component createButtonsRow() { Box box = Box.createHorizontalBox(); addButton = new JButton("Add color"); box.add(addButton); box.add(Box.createHorizontalStrut(5)); removeButton=new JButton("Rem? color"); box.add(removeButton); box.add(Box.createHorizontalStrut(20)); status = new JTextField("stateless member",12); status.setEditable(false); status.setBorder(BorderFactory.createLoweredBevelBorder()); box.add(status); addButton.addActionListener(this); removeButton.addActionListener(this); return box; } public void actionPerformed(ActionEvent e) { Object obj = e.getSource(); if (obj==addButton) { enableUserInteraction(false); stateChanger.addColour(this); } else if (obj==removeButton) { enableUserInteraction(false); stateChanger.remColour(this); } } void enableUserInteraction(final boolean enable) { SwingUtilities.invokeLater(new Runnable(){ public void run() { addButton.setEnabled(enable); removeButton.setEnabled(enable); } }); } StateChanger stateChanger; JTextField state, status; JButton addButton, removeButton; boolean withState; UIFrame uiFrame; };