package org.signalml.plugin.bookreporter.ui.components;
import java.awt.GridLayout;
import javax.swing.JPanel;
import org.signalml.app.view.common.components.panels.UnlimitedSpinnerPanel;
import org.signalml.plugin.bookreporter.data.BookReporterMinMaxRange;
/**
* @author piotr@develancer.pl
* (based on Michal Dobaczewski's NewStagerMinMaxSpinnerPanel)
*/
public class BookReporterMinMaxSpinnerPanel extends JPanel {
private static final long serialVersionUID = 1L;
private final UnlimitedSpinnerPanel minPanel;
private final UnlimitedSpinnerPanel maxPanel;
public BookReporterMinMaxSpinnerPanel(double minValue, double maxValue, double min,
double max, double step, double minAuto, double maxAuto) {
super();
setLayout(new GridLayout(2, 1, 0, 3));
minPanel = new UnlimitedSpinnerPanel(minValue, min, max, step, true);
maxPanel = new UnlimitedSpinnerPanel(maxValue, min, max, step, true);
add(minPanel);
add(maxPanel);
}
public double getMin() {
return minPanel.isUnlimited() ? Double.NEGATIVE_INFINITY : minPanel.getValue();
}
public void setMin(double min) {
if (min == Double.NEGATIVE_INFINITY) {
minPanel.setUnlimited(true);
} else {
minPanel.setValue(min);
minPanel.setUnlimited(false);
}
}
public boolean isMinUnlimited() {
return minPanel.isUnlimited();
}
public double getMax() {
return maxPanel.isUnlimited() ? Double.POSITIVE_INFINITY : maxPanel.getValue();
}
public void setMax(double max) {
if (max == Double.POSITIVE_INFINITY) {
maxPanel.setUnlimited(true);
} else {
maxPanel.setValue(max);
maxPanel.setUnlimited(false);
}
}
public boolean isMaxUnlimited() {
return maxPanel.isUnlimited();
}
public void setRange(BookReporterMinMaxRange range) {
this.setMin(range.getMin());
this.setMax(range.getMax());
}
public BookReporterMinMaxRange getRange() {
return new BookReporterMinMaxRange(getMin(), getMax());
}
}