package AngioTool;
import Utils.Misc;
import java.awt.event.*;
import javax.swing.*;
public class NumberEntry
{
public JCheckBox cb;
public JLabel units;
public JTextField tf;
public String name;
public final double originalValue;
public NumberEntry(String name, boolean enabled, double value, String unitsStr)
{
this.name = name;
this.originalValue = value;
cb = new JCheckBox();
cb.addActionListener((ActionEvent e) -> toggleCheckbox());
cb.setText(name);
units = new JLabel(unitsStr, SwingConstants.RIGHT);
tf = new JTextField();
tf.setText(Misc.formatDouble(value));
tf.setEnabled(enabled);
cb.setSelected(enabled);
}
public void update(boolean enabled, double value)
{
tf.setText(Misc.formatDouble(value));
tf.setEnabled(enabled);
cb.setSelected(enabled);
}
public double getValue()
{
String str = tf.getText();
try {
return Double.parseDouble(str);
}
catch (Exception ex) {
return originalValue;
}
}
public GroupLayout.Group addToSeqGroup(GroupLayout.Group seqGroup)
{
return seqGroup
.addComponent(cb)
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(units)
.addGap(4)
.addComponent(tf, 64, 64, 64);
}
public GroupLayout.Group addToParaGroup(GroupLayout.Group paraGroup)
{
final int MIN_TEXT_HEIGHT = 18;
final int TEXT_HEIGHT = 24;
return paraGroup
.addComponent(cb, MIN_TEXT_HEIGHT, TEXT_HEIGHT, TEXT_HEIGHT)
.addComponent(units)
.addComponent(tf, MIN_TEXT_HEIGHT, TEXT_HEIGHT, TEXT_HEIGHT);
}
public void toggleCheckbox()
{
boolean enabled = cb.isSelected();
double value = getValue();
tf.setText(Misc.formatDouble(value));
tf.setEnabled(enabled);
}
}