1
package figtree.treeviewer;
3
import jam.panels.OptionsPanel;
6
import javax.swing.border.EmptyBorder;
7
import java.awt.event.ActionEvent;
8
import java.awt.event.ActionListener;
11
import figtree.ui.components.RealNumberField;
14
* @author Andrew Rambaut
17
public class SizeScaleDialog {
20
private String dimensionName;
22
private OptionsPanel options;
23
private JCheckBox autoScaleCheck;
24
private JLabel fromLabel;
25
private RealNumberField fromNumberField;
26
private JLabel toLabel;
27
private RealNumberField toNumberField;
29
private RealNumberField fromSizeField;
30
private RealNumberField toSizeField;
32
public SizeScaleDialog(final JFrame frame, final String dimensionName, boolean autoRange, double fromValue, double toValue,
33
final double fromWidth, final double toWidth) {
36
this.dimensionName = dimensionName;
38
autoScaleCheck = new JCheckBox("Auto-scale range");
39
autoScaleCheck.setSelected(autoRange);
41
fromLabel = new JLabel("Range from:");
42
fromNumberField = new RealNumberField();
43
fromNumberField.setColumns(10);
44
fromNumberField.setValue(fromValue);
46
toLabel = new JLabel("to:");
47
toNumberField = new RealNumberField();
48
toNumberField.setColumns(10);
49
toNumberField.setValue(toValue);
51
fromLabel.setEnabled(false);
52
fromNumberField.setEnabled(false);
53
toLabel.setEnabled(false);
54
toNumberField.setEnabled(false);
56
fromSizeField = new RealNumberField();
57
fromSizeField.setColumns(4);
58
fromSizeField.setValue(fromWidth);
59
toSizeField = new RealNumberField();
60
toSizeField.setColumns(4);
61
toSizeField.setValue(toWidth);
63
autoScaleCheck.addActionListener(new ActionListener() {
64
public void actionPerformed(ActionEvent event) {
65
boolean enabled = !autoScaleCheck.isSelected();
66
fromLabel.setEnabled(enabled);
67
fromNumberField.setEnabled(enabled);
68
toLabel.setEnabled(enabled);
69
toNumberField.setEnabled(enabled);
74
public int showDialog() {
76
options = new OptionsPanel(6, 6);
78
options.addComponent(autoScaleCheck);
80
JPanel panel = new JPanel();
81
panel.setLayout(new FlowLayout());
83
panel.add(fromNumberField);
85
panel.add(toNumberField);
86
options.addComponent(panel);
88
JPanel panel1 = new JPanel();
89
panel1.setLayout(new FlowLayout());
90
panel1.add(new JLabel(dimensionName + " from:"));
91
panel1.add(fromSizeField);
92
panel1.add(new JLabel("to:"));
93
panel1.add(toSizeField);
94
options.addComponent(panel1);
96
JOptionPane optionPane = new JOptionPane(options,
97
JOptionPane.QUESTION_MESSAGE,
98
JOptionPane.OK_CANCEL_OPTION,
102
optionPane.setBorder(new EmptyBorder(12, 12, 12, 12));
104
final JDialog dialog = optionPane.createDialog(frame, "Setup " + dimensionName + " scale");
107
autoScaleCheck.addActionListener(new ActionListener() {
108
public void actionPerformed(ActionEvent event) {
109
boolean enabled = !autoScaleCheck.isSelected();
110
fromLabel.setEnabled(enabled);
111
fromNumberField.setEnabled(enabled);
112
toLabel.setEnabled(enabled);
113
toNumberField.setEnabled(enabled);
116
dialog.setVisible(true);
118
int result = JOptionPane.CANCEL_OPTION;
119
Integer value = (Integer)optionPane.getValue();
120
if (value != null && value.intValue() != -1) {
121
result = value.intValue();
127
public boolean getAutoRange() {
128
return autoScaleCheck.isSelected();
131
public Number getFromValue() {
132
return fromNumberField.getValue();
135
public Number getToValue() {
136
return toNumberField.getValue();
139
public Number getFromWidth() {
140
return fromSizeField.getValue();
143
public Number getToWidth() {
144
return toSizeField.getValue();
b'\\ No newline at end of file'