package com.traxel.lumbermill.log;
import java.awt.event.ActionEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.BoxLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.Timer;
public class LogStatus extends JPanel
implements PropertyChangeListener {
private final Log LOG;
private final JTextField SIZE_FIELD = new JTextField(5);
private final JTextField INFO_FIELD = new JTextField(16);
private final JLabel SIZE_LABEL = new JLabel(" Log Size: ", JLabel.TRAILING);
private final JLabel INFO_LABEL = new JLabel(" ", JLabel.TRAILING);
private final Action SIZE_ACTION = new SizeAction();
private final Timer TIMER = new Timer(1000, SIZE_ACTION);
setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
LOG = log;
SIZE_LABEL.setLabelFor(SIZE_FIELD);
INFO_LABEL.setLabelFor(INFO_FIELD);
add(SIZE_LABEL);
add(SIZE_FIELD);
add(INFO_LABEL);
add(INFO_FIELD);
SIZE_FIELD.setEditable(false);
INFO_FIELD.setEditable(false);
TIMER.setRepeats(true);
LOG.addPropertyListener(this);
TIMER.start();
}
@Override
if (LOG.equals(event.getSource())) {
final String propertyName;
Object newValue;
INFO_FIELD.setText("");
propertyName = event.getPropertyName();
newValue = event.getNewValue();
if (Log.INFO_PROPERTY_NAME.equals(propertyName)) {
if (newValue == null) {
newValue = "";
}
INFO_FIELD.setText(newValue.toString());
}
}
}
@Override
SIZE_FIELD.setText("" + LOG.size());
}
}
}