/* BookAverageMethodDialog.java created 2007-10-22
*
*/
package org.signalml.app.method.bookaverage;
import static org.signalml.app.util.i18n.SvarogI18n._;
import java.awt.Window;
import javax.swing.JComponent;
import org.signalml.app.model.components.validation.ValidationErrors;
import org.signalml.app.util.IconUtils;
import org.signalml.app.view.common.dialogs.AbstractDialog;
import org.signalml.method.bookaverage.BookAverageData;
import org.signalml.plugin.export.SignalMLException;
/**
* BookAverageMethodDialog
*
* @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o.
* (+ fixed by) piotr@develancer.pl
*/
public class BookAverageMethodDialog extends AbstractDialog {
private static final long serialVersionUID = 1L;
BookAverageMethodPanel panel;
public BookAverageMethodDialog(Window window) {
super(window,true);
}
@Override
protected void initialize() {
setTitle(_("Configure book averaging"));
setIconImage(IconUtils.loadClassPathImage(BookAverageMethodDescriptor.ICON_PATH));
setResizable(false);
super.initialize();
}
@Override
public JComponent createInterface() {
this.panel = new BookAverageMethodPanel();
return this.panel;
}
@Override
public void fillDialogFromModel(Object model) throws SignalMLException {
BookAverageData data = (BookAverageData) model;
panel.setSelectedWidth(data.getWidth());
panel.setSelectedHeight(data.getHeight());
panel.setTimeStart(data.getMinPosition());
panel.setTimeEnd(data.getMaxPosition());
panel.setFrequencyStart(data.getMinFrequency());
panel.setFrequencyEnd(data.getMaxFrequency());
panel.setPageStart(data.getMinSegment() + 1);
panel.setPageEnd(data.getMaxSegment() + 1);
}
@Override
public void fillModelFromDialog(Object model) throws SignalMLException {
BookAverageData data = (BookAverageData) model;
data.setWidth(panel.getSelectedWidth());
data.setHeight(panel.getSelectedHeight());
data.setMinPosition(panel.getTimeStart());
data.setMaxPosition(panel.getTimeEnd());
data.setMinFrequency(panel.getFrequencyStart());
data.setMaxFrequency(panel.getFrequencyEnd());
data.setMinSegment(panel.getPageStart() - 1);
data.setMaxSegment(panel.getPageEnd() - 1);
}
@Override
public boolean supportsModelClass(Class<?> clazz) {
return BookAverageData.class.isAssignableFrom(clazz);
}
@Override
public void validateDialog(Object model, ValidationErrors errors) throws SignalMLException {
super.validateDialog(model, errors);
double timeEnd = panel.getTimeEnd();
double timeStart = panel.getTimeStart();
double freqEnd = panel.getFrequencyEnd();
double freqStart = panel.getFrequencyStart();
int pageEnd = panel.getPageEnd();
int pageStart = panel.getPageStart();
if (pageEnd <= 0 || pageStart <= 0 || pageStart > pageEnd) {
errors.addError(_("Invalid page selection."));
}
if (Double.isNaN(timeEnd) || Double.isInfinite(timeEnd) || timeEnd < 0) {
errors.addError(_("Invalid end time."));
}
if (Double.isNaN(timeStart) || Double.isInfinite(timeStart) || timeStart < 0) {
errors.addError(_("Invalid start time."));
}
if (timeStart >= timeEnd) {
errors.addError(_("Invalid time interval."));
}
if (Double.isNaN(freqEnd) || Double.isInfinite(freqEnd) || freqEnd < 0) {
errors.addError(_("Invalid highest frequency."));
}
if (Double.isNaN(freqStart) || Double.isInfinite(freqStart) || freqStart < 0) {
errors.addError(_("Invalid lowest frequency."));
}
if (freqStart >= freqEnd) {
errors.addError(_("Invalid frequency interval."));
}
if (panel.getSelectedWidth() <= 0 || panel.getSelectedHeight() <= 0) {
errors.addError(_("Invalid image dimensions."));
}
}
}