package com.isti.traceview.gui; import java.text.DecimalFormat; import java.util.List; import com.isti.traceview.common.TimeInterval; import com.isti.traceview.data.PlotData; import com.isti.traceview.gui.ScaleModeAbstract; /** * State pattern realization for scale mode, XHAIR scaling. It means that maximum and minimum values * for value axis set up manually, and they are the same for all channel views. * * @author Max Kokoulin */ public class ScaleModeXhair extends ScaleModeAbstract implements IScaleModeState { public void init(List<PlotData> graphs, List<ChannelView> allViews, TimeInterval timeRange, IMeanState meanState, int height) { maxValue = Double.NEGATIVE_INFINITY; double minValue = Double.POSITIVE_INFINITY; DecimalFormat df = new DecimalFormat("#.###E0"); for (PlotData data: graphs) { if (data.getMeanValue() == Double.POSITIVE_INFINITY || data.getMeanValue() == Double.NEGATIVE_INFINITY) { maxValue = Double.POSITIVE_INFINITY; minValue = Double.NEGATIVE_INFINITY; } else { double dataMaxValue = meanState.getValue(data.getMaxValue(), data.getMeanValue()); if (dataMaxValue > maxValue) { maxValue = Double.valueOf(df.format(dataMaxValue)); } double dataMinValue = meanState.getValue(data.getMinValue(), data.getMeanValue()); if (dataMinValue < minValue) { minValue = Double.valueOf(df.format(dataMinValue)); } } } if ((getManualValueMax() != Double.NEGATIVE_INFINITY) && (getManualValueMin() != Double.POSITIVE_INFINITY)) { maxValue = getManualValueMax(); minValue = getManualValueMin(); } if (maxValue == minValue) { amp = 100.0; } else { amp = maxValue - minValue; } this.height = height; } public String getStateName() { return "XHAIR"; } }