/* FilterResponseChartPanel.java created 2011-02-06
*
*/
package org.signalml.app.view.montage.filters.charts.elements;
import static org.signalml.app.util.i18n.SvarogI18n._;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import org.jfree.chart.ChartPanel;
import org.signalml.app.view.montage.filters.charts.FrequencyRangeSelection;
/**
* A class representing a {@link ChartPanel} which is used to display
* the filter's frequency response and highlight currently selected
* frequency bands.
* @author Piotr Szachewicz
*/
public abstract class FrequencyResponseChartPanel extends ResponseChartPanel implements PropertyChangeListener {
/**
* This object handles highlighting the frequency selections made
* on the plot.
*/
protected SelectionHighlightRenderer selectionHighlightRenderer;
/**
* Constructor.
*/
public FrequencyResponseChartPanel() {
super();
selectionHighlightRenderer = new SelectionHighlightRenderer(this);
selectionHighlightRenderer.addSelectionChangedListener(this);
}
@Override
public String getDomainAxisName() {
return _("Frequency [Hz]");
}
/**
* Adds a new listener which will be notified whenever the selection on
* the chart have been changed.
* @param listener a listener to be added
*/
public void addSelectionChangedListener(PropertyChangeListener listener) {
selectionHighlightRenderer.addSelectionChangedListener(listener);
}
/**
* Removes the listener.
* @param listener listener to be removed
*/
public void removeSelectionChangedListener(PropertyChangeListener listener) {
selectionHighlightRenderer.removeSelectionChangedListener(listener);
}
/**
* Returns the maximum frequency to be shown on the chart.
* @return maximum frequency to be shown
*/
public double getMaximumChartFrequency() {
return getMaximumDomainAxisValue();
}
/**
* Sets a range of frequncies to be highlighted.
* @param frequencyRangeSelection range of frequencies to be highlighted
*/
public void setHighlightedSelection(FrequencyRangeSelection frequencyRangeSelection) {
selectionHighlightRenderer.setFrequencyRangeSelection(frequencyRangeSelection);
}
@Override
public void paintComponent(Graphics gOrig) {
super.paintComponent(gOrig);
selectionHighlightRenderer.paintComponent(gOrig);
}
@Override
public void mousePressed(MouseEvent e) {
super.mousePressed(e);
selectionHighlightRenderer.mousePressed(e);
}
@Override
public void mouseReleased(MouseEvent e) {
super.mouseReleased(e);
selectionHighlightRenderer.mouseReleased(e);
}
@Override
public void mouseDragged(MouseEvent e) {
super.mouseDragged(e);
selectionHighlightRenderer.mouseDragged(e);
}
@Override
public void propertyChange(PropertyChangeEvent evt) {
repaint();
}
@Override
public void setMaximumDomainAxisValue(double maximum) {
super.setMaximumDomainAxisValue(maximum);
if (selectionHighlightRenderer != null)
selectionHighlightRenderer.updateSelectionToScaleChange();
}
}