/*
* (c) Rob Gordon 2005
*/
package org.oddjob.monitor.view;
import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.util.Observable;
import java.util.Observer;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import org.oddjob.monitor.model.StateModel;
/**
*
*/
public class StatePanel extends JPanel implements Observer {
private static final long serialVersionUID = 2005010100L;
private final JTextField stateField = new JTextField(20);
private final JTextField timeField = new JTextField(20);
private final JTextArea exceptionField = new JTextArea();
public StatePanel() {
stateField.setEditable(false);
timeField.setEditable(false);
exceptionField.setEditable(false);
exceptionField.setLineWrap(false);
JPanel main = new JPanel();
JLabel l1 = new JLabel("State", JLabel.TRAILING);
JLabel l2 = new JLabel("Time", JLabel.TRAILING);
JLabel l3 = new JLabel("Exception", JLabel.TRAILING);
JScrollPane scl = new JScrollPane();
scl.setViewportView(exceptionField);
main.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.weightx = 0.0;
c.weighty = 0.0;
c.fill = GridBagConstraints.HORIZONTAL;
c.anchor = GridBagConstraints.NORTH;
c.insets = new Insets(3, 15, 3, 5);
c.gridx = 0;
c.gridy = 0;
main.add(l1, c);
c.gridx = 0;
c.gridy = 1;
main.add(l2, c);
c.gridx = 0;
c.gridy = 2;
main.add(l3, c);
c.insets = new Insets(3, 5, 3, 5);
c.weightx = 1.0;
c.gridx = 1;
c.gridy = 0;
main.add(stateField, c);
c.gridx = 1;
c.gridy = 1;
main.add(timeField, c);
c.fill = GridBagConstraints.BOTH;
c.weighty = 1.0;
c.gridx = 1;
c.gridy = 2;
main.add(scl, c);
JScrollPane formScroll = new JScrollPane();
formScroll.setViewportView(main);
setLayout(new BorderLayout());
add(formScroll, BorderLayout.CENTER);
// c.insets = new Insets(0, 0, 0, 0);
// c.gridx = 2;
// c.gridy = 0;
// c.gridheight = GridBagConstraints.REMAINDER;
// c.weightx = 1.0;
// c.weighty = 0.0;
// JComponent padding1 = new JPanel();
// add(padding1, c);
}
/* (non-Javadoc)
* @see java.util.Observer#update(java.util.Observable, java.lang.Object)
*/
public void update(Observable o, Object arg) {
final StateModel model = (StateModel) o;
SwingUtilities.invokeLater(new Runnable() {
public void run() {
stateField.setText(model.getState());
timeField.setText(model.getTime());
exceptionField.setText(model.getException());
}
});
}
}