package org.signalml.plugin.bookreporter.ui.components;
import java.awt.GridLayout;
import javax.swing.AbstractAction;
import javax.swing.JPanel;
import org.signalml.app.view.common.components.CompactButton;
import org.signalml.plugin.bookreporter.chart.preset.BookReporterChartPreset;
import org.signalml.plugin.bookreporter.data.BookReporterConstants;
import org.signalml.plugin.bookreporter.data.BookReporterFASPThreshold;
/**
* @author piotr@develancer.pl
*/
public class BookReporterChartRow {
private final CompactButton removeButton;
private final BookReporterTitleLabel label;
private final BookReporterChartPreset preset;
private final BookReporterMinMaxSpinnerPanel amplitudePanel;
private final BookReporterMinMaxSpinnerPanel frequencyPanel;
private final BookReporterMinMaxSpinnerPanel scalePanel;
private final BookReporterMinMaxSpinnerPanel phasePanel;
public BookReporterChartRow(BookReporterChartPreset chartPreset) {
removeButton = new CompactButton();
label = new BookReporterTitleLabel(chartPreset.getCaption());
preset = chartPreset;
amplitudePanel = new BookReporterMinMaxSpinnerPanel(
BookReporterConstants.MIN_AMPLITUDE, BookReporterConstants.MAX_AMPLITUDE,
BookReporterConstants.MIN_AMPLITUDE, BookReporterConstants.MAX_AMPLITUDE,
BookReporterConstants.INCR_AMPLITUDE, 0, 0);
frequencyPanel = new BookReporterMinMaxSpinnerPanel(
BookReporterConstants.MIN_FREQUENCY, BookReporterConstants.MAX_FREQUENCY,
BookReporterConstants.MIN_FREQUENCY, BookReporterConstants.MAX_FREQUENCY,
BookReporterConstants.INCR_FREQUENCY, 0, 0);
scalePanel = new BookReporterMinMaxSpinnerPanel(
BookReporterConstants.MIN_SCALE, BookReporterConstants.MAX_SCALE,
BookReporterConstants.MIN_SCALE, BookReporterConstants.MAX_SCALE,
BookReporterConstants.INCR_SCALE, 0, 0);
phasePanel = new BookReporterMinMaxSpinnerPanel(
BookReporterConstants.MIN_PHASE, BookReporterConstants.MAX_PHASE,
BookReporterConstants.MIN_PHASE, BookReporterConstants.MAX_PHASE,
BookReporterConstants.INCR_PHASE, 0, 0);
BookReporterFASPThreshold fasp = chartPreset.getThreshold();
amplitudePanel.setRange(fasp.amplitude);
frequencyPanel.setRange(fasp.frequency);
scalePanel.setRange(fasp.scale);
phasePanel.setRange(fasp.phase);
}
public BookReporterChartPreset getPreset() {
this.preset.setThreshold(new BookReporterFASPThreshold(
frequencyPanel.getRange(),
amplitudePanel.getRange(),
scalePanel.getRange(),
phasePanel.getRange()
));
return this.preset;
}
public void addToPanel(JPanel parent) {
parent.add(removeButton);
parent.add(label);
parent.add(amplitudePanel);
parent.add(frequencyPanel);
parent.add(scalePanel);
parent.add(phasePanel);
parent.setLayout(new GridLayout(parent.getComponentCount()/6, 6, 6, 10));
}
public void removeFromPanel(JPanel parent) {
parent.remove(removeButton);
parent.remove(label);
parent.remove(amplitudePanel);
parent.remove(frequencyPanel);
parent.remove(scalePanel);
parent.remove(phasePanel);
parent.setLayout(new GridLayout(parent.getComponentCount()/6, 6, 6, 10));
}
public void setRemoveAction(AbstractAction action) {
this.removeButton.setAction(action);
}
}