diff --git a/src/d3/D3Control.java b/src/d3/D3Control.java index e7e66d3c..5bf35270 100644 --- a/src/d3/D3Control.java +++ b/src/d3/D3Control.java @@ -16,12 +16,15 @@ import d3.calibration.CalFileReader; import d3.calibration.CalibrationInfo; import d3.calibration.CalibrationSet; import d3.plots.D3DataPlotProvider; +import d3.plots.D3DataProviderFX; import dataPlots.data.TDDataProviderRegister; +import dataPlotsFX.data.TDDataProviderRegisterFX; import fileOfflineData.OfflineFileControl; import fileOfflineData.OfflineFileMapPoint; import fileOfflineData.OfflineFileProcess; //import au.com.bytecode.opencsv.CSVReader; import pamScrollSystem.ViewLoadObserver; +import userDisplay.UserDisplayControl; import wavFiles.WavFileReader; import wavFiles.WavHeader; @@ -35,13 +38,14 @@ public class D3Control extends OfflineFileControl { private D3DataPlotProvider d3DataPlotProvider; private float[] oldAccell = new float[3]; private D3DataUnit previousJerkUnit; + private D3DataProviderFX d3PlotProvider; public D3Control(String unitName) { super(unitType, unitName); TDDataProviderRegister.getInstance().registerDataInfo(d3DataPlotProvider = new D3DataPlotProvider(this, getD3DataBlock())); -// UserDisplayControl.addUserDisplayProvider(d3PlotProvider = new D3PlotProvider(this)); + TDDataProviderRegisterFX.getInstance().registerDataInfo(d3PlotProvider = new D3DataProviderFX(this, getD3DataBlock())); } @Override @@ -321,6 +325,9 @@ public class D3Control extends OfflineFileControl { float[] calulateDepth(D3DataUnit dataUnit) { // find the pressure calibration and make a depth line. + if (calibrations == null) { + return null; + } CalibrationInfo depthCal = calibrations.findCalibrationInfo("press"); CalibrationInfo tempCal = calibrations.findCalibrationInfo("press:bridge"); int pressInd = findSensorIndex("press"); diff --git a/src/d3/plots/D3DataProviderFX.java b/src/d3/plots/D3DataProviderFX.java new file mode 100644 index 00000000..776d457e --- /dev/null +++ b/src/d3/plots/D3DataProviderFX.java @@ -0,0 +1,43 @@ +package d3.plots; + +import java.util.ArrayList; + +import PamView.GeneralProjector.ParameterType; +import PamView.GeneralProjector.ParameterUnits; +import d3.D3Control; +import d3.D3DataBlock; +import d3.D3SensorInfo; +import dataPlotsFX.data.TDDataInfoFX; +import dataPlotsFX.data.TDDataProviderFX; +import dataPlotsFX.data.TDScaleInfo; +import dataPlotsFX.layout.TDGraphFX; + +public class D3DataProviderFX extends TDDataProviderFX { + + private D3DataBlock d3DataBlock; + private D3Control d3Control; + + public D3DataProviderFX(D3Control d3Control, D3DataBlock d3DataBlock) { + super(d3DataBlock); + this.d3Control = d3Control; + this.d3DataBlock = d3DataBlock; + } + + @Override + public TDDataInfoFX createDataInfo(TDGraphFX tdGraph) { + D3PlotInfoFX dataInfo = new D3PlotInfoFX(d3Control, this, tdGraph, d3DataBlock); + createDataChannels(dataInfo); + return dataInfo; + } + + public int createDataChannels(D3PlotInfoFX dataInfo) { + int ind = 0; + ArrayList sensorInfos = d3Control.getD3SensorInfos(); + for (D3SensorInfo sensInfo:sensorInfos) { + // need min max type units. + dataInfo.addScaleInfo(new TDScaleInfo(-1, 1, ParameterType.AMPLITUDE, ParameterUnits.NONE)); + } + return ind; + } + +} diff --git a/src/d3/plots/D3PlotInfoFX.java b/src/d3/plots/D3PlotInfoFX.java new file mode 100644 index 00000000..568626ec --- /dev/null +++ b/src/d3/plots/D3PlotInfoFX.java @@ -0,0 +1,60 @@ +package d3.plots; + +import PamController.PamControllerInterface; +import PamguardMVC.PamDataBlock; +import PamguardMVC.PamDataUnit; +import d3.D3Control; +import d3.D3DataBlock; +import dataPlotsFX.TDSymbolChooserFX; +import dataPlotsFX.data.TDDataInfoFX; +import dataPlotsFX.data.TDDataProviderFX; +import dataPlotsFX.layout.TDGraphFX; +import dataPlotsFX.projector.TDProjectorFX; +import javafx.scene.canvas.GraphicsContext; +import javafx.scene.shape.Polygon; + +public class D3PlotInfoFX extends TDDataInfoFX { + + private D3Control d3Control; + private D3DataBlock d3DataBlock; + private int dataChannels; + private D3DataProviderFX d3DataProvider; + + public D3PlotInfoFX(D3Control d3Control, D3DataProviderFX d3DataProvider, TDGraphFX tdGraph, D3DataBlock pamDataBlock) { + super(d3DataProvider, tdGraph, pamDataBlock); + this.d3Control = d3Control; + this.d3DataProvider = d3DataProvider; + this.d3DataBlock = pamDataBlock; + } + + @Override + public Polygon drawDataUnit(int plotNumber, PamDataUnit pamDataUnit, GraphicsContext g, double scrollStart, + TDProjectorFX tdProjector, int type) { + // need to draw a line for this. + return null; + } + + @Override + public Double getDataValue(PamDataUnit pamDataUnit) { + // TODO Auto-generated method stub + return 0.2; + } + + @Override + public TDSymbolChooserFX getSymbolChooser() { + // TODO Auto-generated method stub + return null; + } + + @Override + public void notifyChange(int changeType) { + if (changeType == PamControllerInterface.OFFLINE_DATA_LOADED && dataChannels == 0) { + dataChannels = d3DataProvider.createDataChannels(this); + if (dataChannels > 0) { +// getTdGraph().listAvailableAxisNames(); + } + } + } + + +} diff --git a/src/dataPlotsFX/data/TDDataInfoFX.java b/src/dataPlotsFX/data/TDDataInfoFX.java index b01167e3..da3aac78 100644 --- a/src/dataPlotsFX/data/TDDataInfoFX.java +++ b/src/dataPlotsFX/data/TDDataInfoFX.java @@ -143,6 +143,11 @@ public abstract class TDDataInfoFX { scaleInfoIndex = -1; for (int i = 0; i < scaleInfos.size(); i++) { + TDScaleInfo scaleInfo = scaleInfos.get(i); + ParameterType scaleDataType = scaleInfo.getDataType(); + if (scaleDataType == null) { + continue; + } if (scaleInfos.get(i).getDataType().equals(dataType) && scaleInfos.get(i).getDataUnit().equals(dataUnits)) { scaleInfoIndex = i; return true; @@ -167,7 +172,15 @@ public abstract class TDDataInfoFX { */ public boolean hasAxisName(ParameterType dataType, ParameterUnits dataUnits) { for (int i = 0; i < scaleInfos.size(); i++) { - if (scaleInfos.get(i).getDataType().equals(dataType) + TDScaleInfo scaleInfo = scaleInfos.get(i); + if (scaleInfo == null) { + return false; + } + ParameterType scaleDataType = scaleInfo.getDataType(); + if (scaleDataType == null) { + return false; + } + if (scaleInfo.getDataType().equals(dataType) && scaleInfos.get(i).getDataUnit().equals(dataUnits)) { return true; } @@ -291,6 +304,9 @@ public abstract class TDDataInfoFX { */ public TDScaleInfo getScaleInfo() { if (scaleInfoIndex==-1 && scaleInfos.size()>0) scaleInfoIndex=0; + if (scaleInfoIndex < 0 || scaleInfoIndex >= scaleInfos.size()) { + return null; + } return scaleInfos.get(this.scaleInfoIndex); } diff --git a/src/dataPlotsFX/projector/TDProjectorFX.java b/src/dataPlotsFX/projector/TDProjectorFX.java index 6a5e89d9..fc9fa871 100644 --- a/src/dataPlotsFX/projector/TDProjectorFX.java +++ b/src/dataPlotsFX/projector/TDProjectorFX.java @@ -257,6 +257,9 @@ public class TDProjectorFX extends TimeProjectorFX { * @return the axis type string. */ public static String getUnitName(ParameterUnits axisType){ + if (axisType == null) { + return null; + } return axisType.toString(); // String axisUnits=""; @@ -301,6 +304,9 @@ public class TDProjectorFX extends TimeProjectorFX { * @return the axis type string. */ public static String getAxisName(ParameterType axisType){ + if (axisType == null) { + return null; + } return axisType.toString(); // String axisName=""; diff --git a/src/ravendata/RavenProcess.java b/src/ravendata/RavenProcess.java index 196116a4..99835d0d 100644 --- a/src/ravendata/RavenProcess.java +++ b/src/ravendata/RavenProcess.java @@ -12,10 +12,12 @@ import PamView.symbol.StandardSymbolManager; import PamView.symbol.SymbolData; import PamguardMVC.PamProcess; import dataMap.OfflineDataMap; +import dataPlots.data.TDDataProviderRegister; import dataPlotsFX.data.TDDataProviderRegisterFX; import generalDatabase.DBControlUnit; import ravendata.fx.RavenPlotProviderFX; import ravendata.swing.RavenGraphics; +import ravendata.swing.RavenPlotProvider; public class RavenProcess extends PamProcess { @@ -38,6 +40,7 @@ public class RavenProcess extends PamProcess { ravenDataBlock.setPamSymbolManager(new StandardSymbolManager(ravenDataBlock, standardSymbol)); TDDataProviderRegisterFX.getInstance().registerDataInfo(new RavenPlotProviderFX(ravenDataBlock)); +// TDDataProviderRegister.getInstance().registerDataInfo(new RavenPlotProvider(ravenDataBlock)); } @Override diff --git a/src/ravendata/swing/RavenDataInfo.java b/src/ravendata/swing/RavenDataInfo.java new file mode 100644 index 00000000..d7735f62 --- /dev/null +++ b/src/ravendata/swing/RavenDataInfo.java @@ -0,0 +1,27 @@ +package ravendata.swing; + +import PamguardMVC.PamDataBlock; +import PamguardMVC.PamDataUnit; +import dataPlots.data.TDDataInfo; +import dataPlots.data.TDDataProvider; +import dataPlots.data.TDSymbolChooser; +import dataPlots.layout.TDGraph; + +public class RavenDataInfo extends TDDataInfo { + + public RavenDataInfo(TDDataProvider tdDataProvider, TDGraph tdGraph, PamDataBlock dataBlock) { + super(tdDataProvider, tdGraph, dataBlock); + } + + @Override + public Double getDataValue(PamDataUnit pamDataUnit) { + // TODO Auto-generated method stub + return null; + } + + @Override + public TDSymbolChooser getSymbolChooser() { + return null;//getDataBlock().getPamSymbolManager().getSymbolChooser("TDPlot" + getTdGraph().getGraphNumber(), null); + } + +} diff --git a/src/ravendata/swing/RavenPlotProvider.java b/src/ravendata/swing/RavenPlotProvider.java new file mode 100644 index 00000000..5aa1848e --- /dev/null +++ b/src/ravendata/swing/RavenPlotProvider.java @@ -0,0 +1,21 @@ +package ravendata.swing; + +import PamguardMVC.PamDataBlock; +import dataPlots.data.TDDataInfo; +import dataPlots.data.TDDataProvider; +import dataPlots.layout.TDGraph; + +public class RavenPlotProvider extends TDDataProvider { + + public RavenPlotProvider(PamDataBlock parentDataBlock) { + super(parentDataBlock); + // TODO Auto-generated constructor stub + } + + @Override + public TDDataInfo createDataInfo(TDGraph tdGraph) { + // TODO Auto-generated method stub + return new RavenDataInfo(this, tdGraph, getDataBlock()); + } + +}