Loading GUI/src/main/java/cz/fidentis/analyst/core/ControlPanelBuilder.java +76 −2 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ import java.text.ParseException; import java.util.ArrayList; import java.util.List; import java.util.Locale; import javax.swing.AbstractAction; import javax.swing.Box; import javax.swing.ImageIcon; import javax.swing.JButton; Loading Loading @@ -49,6 +50,12 @@ public class ControlPanelBuilder { public static final int NUMBER_OF_FRACTION_DIGITS = 3; private static final double PERCENTAGE_VALUE_MINIMUM = 0.0; private static final double PERCENTAGE_VALUE_MAXIMUM = 1.0; public static final String TEXT_FIELD_BUTTON_PRESSED_PLUS = "plus-pressed"; public static final String TEXT_FIELD_BUTTON_PRESSED_MINUS = "minus-pressed"; private JPanel controlPanel; private int row = 0; private int col = 0; Loading Loading @@ -504,6 +511,73 @@ public class ControlPanelBuilder { return slider; } public JFormattedTextField addFormattedInputFieldButtoned(IntValueRange range, double stepSize, ActionListener inputAction) { GridBagConstraints c = new GridBagConstraints(); c.gridwidth = 1; c.anchor = GridBagConstraints.LINE_END; JButton minusButton = addButtonCustom("-", null, c); JFormattedTextField inputField = addFormattedInputField(range, inputAction); c.anchor = GridBagConstraints.LINE_START; JButton plusButton = addButtonCustom("+", null, c); double step; if (range == null) { // Percents in [0, 1] if (stepSize < 0.0) { step = 0.01; } else { step = stepSize; } } else { // Range of integers between two given integers if (stepSize < 0.0) { step = 1.0; } else { step = Math.round(stepSize); } } minusButton.addActionListener(new AbstractAction() { double minimum = range == null ? PERCENTAGE_VALUE_MINIMUM : range.getMinimum(); @Override public void actionPerformed(ActionEvent ae) { double newValue = parseLocaleDouble(inputField) - step; if (newValue < minimum) { return; } inputField.setValue(newValue); for (ActionListener listener: inputField.getActionListeners()) { listener.actionPerformed(new ActionEvent( inputField, ActionEvent.ACTION_PERFORMED, TEXT_FIELD_BUTTON_PRESSED_MINUS)); } } }); plusButton.addActionListener(new AbstractAction() { double maximum = range == null ? PERCENTAGE_VALUE_MAXIMUM : range.getMaximum(); @Override public void actionPerformed(ActionEvent ae) { double newValue = parseLocaleDouble(inputField) + step; if (newValue > maximum) { return; } inputField.setValue(newValue); for (ActionListener listener: inputField.getActionListeners()) { listener.actionPerformed(new ActionEvent( inputField, ActionEvent.ACTION_PERFORMED, TEXT_FIELD_BUTTON_PRESSED_PLUS)); } } }); return inputField; } public JFormattedTextField addFormattedInputField(IntValueRange range, ActionListener inputAction) { GridBagConstraints c = new GridBagConstraints(); c.gridwidth = 2; Loading @@ -521,8 +595,8 @@ public class ControlPanelBuilder { format.setRoundingMode(RoundingMode.HALF_UP); formatter = new NumberFormatter(format); formatter.setValueClass(Double.class); formatter.setMinimum(0.0); formatter.setMaximum(1.0); formatter.setMinimum(PERCENTAGE_VALUE_MINIMUM); formatter.setMaximum(PERCENTAGE_VALUE_MAXIMUM); } else { NumberFormat format = NumberFormat.getInstance(); formatter = new NumberFormatter(format); Loading Loading
GUI/src/main/java/cz/fidentis/analyst/core/ControlPanelBuilder.java +76 −2 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ import java.text.ParseException; import java.util.ArrayList; import java.util.List; import java.util.Locale; import javax.swing.AbstractAction; import javax.swing.Box; import javax.swing.ImageIcon; import javax.swing.JButton; Loading Loading @@ -49,6 +50,12 @@ public class ControlPanelBuilder { public static final int NUMBER_OF_FRACTION_DIGITS = 3; private static final double PERCENTAGE_VALUE_MINIMUM = 0.0; private static final double PERCENTAGE_VALUE_MAXIMUM = 1.0; public static final String TEXT_FIELD_BUTTON_PRESSED_PLUS = "plus-pressed"; public static final String TEXT_FIELD_BUTTON_PRESSED_MINUS = "minus-pressed"; private JPanel controlPanel; private int row = 0; private int col = 0; Loading Loading @@ -504,6 +511,73 @@ public class ControlPanelBuilder { return slider; } public JFormattedTextField addFormattedInputFieldButtoned(IntValueRange range, double stepSize, ActionListener inputAction) { GridBagConstraints c = new GridBagConstraints(); c.gridwidth = 1; c.anchor = GridBagConstraints.LINE_END; JButton minusButton = addButtonCustom("-", null, c); JFormattedTextField inputField = addFormattedInputField(range, inputAction); c.anchor = GridBagConstraints.LINE_START; JButton plusButton = addButtonCustom("+", null, c); double step; if (range == null) { // Percents in [0, 1] if (stepSize < 0.0) { step = 0.01; } else { step = stepSize; } } else { // Range of integers between two given integers if (stepSize < 0.0) { step = 1.0; } else { step = Math.round(stepSize); } } minusButton.addActionListener(new AbstractAction() { double minimum = range == null ? PERCENTAGE_VALUE_MINIMUM : range.getMinimum(); @Override public void actionPerformed(ActionEvent ae) { double newValue = parseLocaleDouble(inputField) - step; if (newValue < minimum) { return; } inputField.setValue(newValue); for (ActionListener listener: inputField.getActionListeners()) { listener.actionPerformed(new ActionEvent( inputField, ActionEvent.ACTION_PERFORMED, TEXT_FIELD_BUTTON_PRESSED_MINUS)); } } }); plusButton.addActionListener(new AbstractAction() { double maximum = range == null ? PERCENTAGE_VALUE_MAXIMUM : range.getMaximum(); @Override public void actionPerformed(ActionEvent ae) { double newValue = parseLocaleDouble(inputField) + step; if (newValue > maximum) { return; } inputField.setValue(newValue); for (ActionListener listener: inputField.getActionListeners()) { listener.actionPerformed(new ActionEvent( inputField, ActionEvent.ACTION_PERFORMED, TEXT_FIELD_BUTTON_PRESSED_PLUS)); } } }); return inputField; } public JFormattedTextField addFormattedInputField(IntValueRange range, ActionListener inputAction) { GridBagConstraints c = new GridBagConstraints(); c.gridwidth = 2; Loading @@ -521,8 +595,8 @@ public class ControlPanelBuilder { format.setRoundingMode(RoundingMode.HALF_UP); formatter = new NumberFormatter(format); formatter.setValueClass(Double.class); formatter.setMinimum(0.0); formatter.setMaximum(1.0); formatter.setMinimum(PERCENTAGE_VALUE_MINIMUM); formatter.setMaximum(PERCENTAGE_VALUE_MAXIMUM); } else { NumberFormat format = NumberFormat.getInstance(); formatter = new NumberFormatter(format); Loading