mirror of
https://github.com/PAMGuard/PAMGuard.git
synced 2024-11-21 22:52:22 +00:00
Merge branch 'Tethys' of C:\Users\dg50\source\repos\PAMGuardTethys into
Tethys
This commit is contained in:
commit
3059e087ac
@ -17,10 +17,7 @@
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="lib" path="C:/Users/dg50/Tethys/NilusXMLGenerator/target/nilus-1.5.jar">
|
||||
<attributes>
|
||||
<attribute name="javadoc_location" value="jar:file:/C:/Users/dg50/Tethys/NilusXMLGenerator/target/nilus-1.5-javadoc.jar!/"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry combineaccessrules="false" kind="src" path="/nilusxmlgenerator"/>
|
||||
<classpathentry combineaccessrules="false" kind="src" path="/TethysJavaClient"/>
|
||||
<classpathentry kind="output" path="target/classes"/>
|
||||
</classpath>
|
||||
|
2
.project
2
.project
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>PamGuard Main DG</name>
|
||||
<name>PamGuard Main Tethys</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
|
@ -5,6 +5,7 @@ import java.lang.reflect.Field;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import PamModel.parametermanager.PrivatePamParameterData;
|
||||
|
||||
public class AISParameters implements Serializable, Cloneable, ManagedParameters {
|
||||
@ -51,7 +52,7 @@ public class AISParameters implements Serializable, Cloneable, ManagedParameters
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
try {
|
||||
Field field = this.getClass().getDeclaredField("nmeaSource");
|
||||
ps.put(new PrivatePamParameterData(this, field) {
|
||||
|
@ -5,6 +5,7 @@ import java.io.Serializable;
|
||||
import NMEA.NMEABitArray;
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import PamUtils.LatLong;
|
||||
|
||||
/**
|
||||
@ -160,7 +161,7 @@ sensor.
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -6,6 +6,7 @@ import java.util.Calendar;
|
||||
import NMEA.NMEABitArray;
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import PamUtils.PamCalendar;
|
||||
|
||||
public class AISStaticData extends AISReport implements Serializable, ManagedParameters{
|
||||
@ -393,7 +394,7 @@ public class AISStaticData extends AISReport implements Serializable, ManagedPar
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -283,6 +283,16 @@ public class AcquisitionControl extends RawInputControlledUnit implements PamSet
|
||||
return daqControllers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDataLocation() {
|
||||
if (offlineFileServer == null) {
|
||||
return null;
|
||||
}
|
||||
else {
|
||||
return offlineFileServer.getDataLocation();
|
||||
}
|
||||
}
|
||||
|
||||
public AcquisitionProcess getDaqProcess() {
|
||||
return acquisitionProcess;
|
||||
}
|
||||
|
@ -151,6 +151,7 @@ public class AcquisitionDialog extends PamDialog {
|
||||
acquisitionParameters = oldParams.clone();
|
||||
|
||||
acquisitionControl = daqControl;
|
||||
// singleInstance = null;
|
||||
|
||||
if (singleInstance == null || singleInstance.getOwner() != parentFrame) {
|
||||
singleInstance = new AcquisitionDialog(parentFrame);
|
||||
|
@ -10,6 +10,7 @@ import Array.Preamplifier;
|
||||
import PamController.PamController;
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import PamModel.parametermanager.PrivatePamParameterData;
|
||||
import PamguardMVC.PamConstants;
|
||||
|
||||
@ -320,7 +321,7 @@ public class AcquisitionParameters implements Serializable, Cloneable, ManagedPa
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
try {
|
||||
Field field = this.getClass().getDeclaredField("channelList");
|
||||
ps.put(new PrivatePamParameterData(this, field) {
|
||||
|
@ -5,6 +5,7 @@ import java.lang.reflect.Field;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import PamModel.parametermanager.PrivatePamParameterData;
|
||||
import binaryFileStorage.BinaryHeader;
|
||||
import binaryFileStorage.BinaryObjectData;
|
||||
@ -30,7 +31,7 @@ class DaqStatusModuleHeader extends ModuleHeader implements Serializable, Manage
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
try {
|
||||
Field field = this.getClass().getDeclaredField("daqName");
|
||||
ps.put(new PrivatePamParameterData(this, field) {
|
||||
|
@ -5,6 +5,7 @@ import java.util.ArrayList;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
/**
|
||||
* Used by FileInputSystem
|
||||
@ -78,7 +79,7 @@ public class FileInputParameters implements Serializable, Cloneable, ManagedPara
|
||||
return null;
|
||||
}
|
||||
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
return ps;
|
||||
}
|
||||
}
|
||||
|
@ -318,6 +318,9 @@ public class FolderInputSystem extends FileInputSystem implements PamSettings, D
|
||||
}
|
||||
selection = folderInputParameters.getSelectedFiles();
|
||||
}
|
||||
if (selection == null) {
|
||||
return 0;
|
||||
}
|
||||
if (selection.length > 0) {
|
||||
System.out.println("FolderInputSystem.makeSelFileList(): Searching for sound files in " + selection[0]);
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import simulatedAcquisition.SimProcess;
|
||||
|
||||
/**
|
||||
@ -47,7 +48,7 @@ public class SoundCardParameters implements Serializable, Cloneable, ManagedPara
|
||||
return null;
|
||||
}
|
||||
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
return ps;
|
||||
}
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ import java.util.TimeZone;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import soundtrap.STXMLFile;
|
||||
|
||||
public class StandardFileDateSettings implements Serializable, Cloneable, ManagedParameters {
|
||||
@ -150,7 +151,7 @@ public class StandardFileDateSettings implements Serializable, Cloneable, Manage
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||
return ps;
|
||||
}
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ import Acquisition.AcquisitionControl;
|
||||
import Acquisition.AcquisitionDialog;
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
public class PPSParameters implements Cloneable, Serializable, ManagedParameters {
|
||||
|
||||
@ -36,7 +37,7 @@ public class PPSParameters implements Cloneable, Serializable, ManagedParameters
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -6,6 +6,7 @@ import java.lang.reflect.Field;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import PamModel.parametermanager.PrivatePamParameterData;
|
||||
import PamUtils.LatLong;
|
||||
|
||||
@ -95,7 +96,7 @@ public class AirgunParameters implements Serializable, Cloneable, ManagedParamet
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||
try {
|
||||
Field field = this.getClass().getDeclaredField("dimE");
|
||||
ps.put(new PrivatePamParameterData(this, field) {
|
||||
|
@ -44,6 +44,8 @@ public class ArrayDialog extends PamDialog implements ActionListener {
|
||||
private EnvironmentPanel environmentPanel;
|
||||
|
||||
private HydrophoneDiagram hydrophoneDiagram;
|
||||
|
||||
private InstrumentIdentityPanel instrumentIdentityPanel;
|
||||
|
||||
private JButton okButton, cancelButton;
|
||||
|
||||
@ -69,11 +71,14 @@ public class ArrayDialog extends PamDialog implements ActionListener {
|
||||
eastPanel.add(channelPanel.getChannelPanel());
|
||||
|
||||
environmentPanel = new EnvironmentPanel(this);
|
||||
instrumentIdentityPanel = new InstrumentIdentityPanel();
|
||||
// eastPanel.add(environmentPanel.getEnvironmentPanel());
|
||||
|
||||
hydrophoneDiagram = new HydrophoneDiagram(this);
|
||||
JPanel westPanel = new JPanel(new BorderLayout());
|
||||
westPanel.add(BorderLayout.CENTER, hydrophoneDiagram.getPlotPanel());
|
||||
westPanel.add(BorderLayout.SOUTH, environmentPanel.getEnvironmentPanel());
|
||||
westPanel.add(BorderLayout.NORTH, instrumentIdentityPanel.getComponent());
|
||||
|
||||
|
||||
splitPanel.add(westPanel);
|
||||
@ -144,6 +149,7 @@ public class ArrayDialog extends PamDialog implements ActionListener {
|
||||
hydrophoneDialogPanel.setParams(selArray);
|
||||
channelPanel.setParams();
|
||||
hydrophoneDiagram.rePaint();
|
||||
instrumentIdentityPanel.setParams(selArray);
|
||||
if (selArray != null) {
|
||||
environmentPanel.setNewSpeed(selArray.getSpeedOfSound());
|
||||
}
|
||||
@ -171,6 +177,7 @@ public class ArrayDialog extends PamDialog implements ActionListener {
|
||||
array.setSpeedOfSound(environmentPanel.getNewSpeed());
|
||||
array.setSpeedOfSoundError(environmentPanel.getNewError());
|
||||
hydrophoneDialogPanel.getParams();
|
||||
instrumentIdentityPanel.getParams(array);
|
||||
|
||||
if (checkDaqChannels(array) == false) {
|
||||
return false;
|
||||
@ -250,6 +257,7 @@ public class ArrayDialog extends PamDialog implements ActionListener {
|
||||
environmentPanel.setNewSpeed(currentArray.getSpeedOfSound());
|
||||
environmentPanel.setNewError(currentArray.getSpeedOfSoundError());
|
||||
}
|
||||
instrumentIdentityPanel.setParams(currentArray);
|
||||
}
|
||||
|
||||
void newChannelSelection() {
|
||||
|
@ -28,6 +28,7 @@ import java.util.Arrays;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import PamModel.parametermanager.PrivatePamParameterData;
|
||||
import pamMaths.PamVector;
|
||||
import PamView.PamSymbol;
|
||||
@ -158,7 +159,7 @@ public class Hydrophone implements Serializable, Cloneable, ManagedParameters {
|
||||
return sensitivity;
|
||||
}
|
||||
|
||||
protected void setSensitivity(double sensitivity) {
|
||||
public void setSensitivity(double sensitivity) {
|
||||
this.sensitivity = sensitivity;
|
||||
}
|
||||
|
||||
@ -333,7 +334,7 @@ public class Hydrophone implements Serializable, Cloneable, ManagedParameters {
|
||||
/**
|
||||
* @return Returns the coordinate.
|
||||
*/
|
||||
protected double[] getCoordinates() {
|
||||
public double[] getCoordinates() {
|
||||
return Arrays.copyOf(coordinate,3);
|
||||
}
|
||||
|
||||
@ -364,7 +365,7 @@ public class Hydrophone implements Serializable, Cloneable, ManagedParameters {
|
||||
/**
|
||||
* @param preampGain The preampGain to set.
|
||||
*/
|
||||
protected void setPreampGain(double preampGain) {
|
||||
public void setPreampGain(double preampGain) {
|
||||
this.preampGain = preampGain;
|
||||
}
|
||||
|
||||
@ -478,7 +479,7 @@ public class Hydrophone implements Serializable, Cloneable, ManagedParameters {
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet pps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet pps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
Field f;
|
||||
try {
|
||||
f = this.getClass().getDeclaredField("coordinate");
|
||||
|
@ -7,6 +7,7 @@ import Array.streamerOrigin.StreamerDataIterator;
|
||||
import GPS.GpsData;
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import PamModel.parametermanager.PrivatePamParameterData;
|
||||
import PamUtils.LatLong;
|
||||
import PamguardMVC.PamDataBlock;
|
||||
@ -225,7 +226,7 @@ abstract public class HydrophoneLocator implements Serializable, Cloneable, Mana
|
||||
*/
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
try {
|
||||
Field field = this.getClass().getDeclaredField("pamArray");
|
||||
ps.put(new PrivatePamParameterData(this, field) {
|
||||
|
72
src/Array/InstrumentIdentityPanel.java
Normal file
72
src/Array/InstrumentIdentityPanel.java
Normal file
@ -0,0 +1,72 @@
|
||||
package Array;
|
||||
|
||||
import java.awt.GridBagConstraints;
|
||||
import java.awt.GridBagLayout;
|
||||
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JTextField;
|
||||
import javax.swing.border.TitledBorder;
|
||||
|
||||
import PamView.dialog.PamGridBagContraints;
|
||||
import PamView.panel.WestAlignedPanel;
|
||||
|
||||
/**
|
||||
* Instrument identity panel, contrians additional fields required by Tethys.
|
||||
* @author dg50
|
||||
*
|
||||
*/
|
||||
public class InstrumentIdentityPanel {
|
||||
|
||||
private JPanel mainPanel;
|
||||
|
||||
private JTextField instrumentId;
|
||||
|
||||
private JTextField instrumentType;
|
||||
|
||||
public InstrumentIdentityPanel() {
|
||||
mainPanel = new WestAlignedPanel();
|
||||
mainPanel.setBorder(new TitledBorder("Instrument information"));
|
||||
mainPanel.setLayout(new GridBagLayout());
|
||||
GridBagConstraints c = new PamGridBagContraints();
|
||||
mainPanel.add(new JLabel("Instrument Type ", JLabel.RIGHT), c);
|
||||
c.gridx++;
|
||||
mainPanel.add(instrumentType = new JTextField(20), c);
|
||||
c.gridx = 0;
|
||||
c.gridy++;
|
||||
mainPanel.add(new JLabel("Instrument Id ", JLabel.RIGHT), c);
|
||||
c.gridx++;
|
||||
mainPanel.add(instrumentId = new JTextField(20), c);
|
||||
|
||||
instrumentType.setToolTipText("Instrument type, e.g. Towed array, HARP, EAR, Popup, DMON, Rock Hopper, etc.");
|
||||
instrumentId.setToolTipText("Instrument identifier, e.g. serial number");
|
||||
|
||||
}
|
||||
|
||||
public JComponent getComponent() {
|
||||
return mainPanel;
|
||||
}
|
||||
|
||||
public void setParams(PamArray currentArray) {
|
||||
if (currentArray == null) {
|
||||
currentArray = ArrayManager.getArrayManager().getCurrentArray();
|
||||
}
|
||||
if (currentArray == null) {
|
||||
return;
|
||||
}
|
||||
instrumentType.setText(currentArray.getInstrumentType());
|
||||
instrumentId.setText(currentArray.getInstrumentId());
|
||||
}
|
||||
|
||||
public void getParams(PamArray currentArray) {
|
||||
if (currentArray == null) {
|
||||
currentArray = ArrayManager.getArrayManager().getCurrentArray();
|
||||
}
|
||||
if (currentArray == null) {
|
||||
return;
|
||||
}
|
||||
currentArray.setInstrumentType(instrumentType.getText());
|
||||
currentArray.setInstrumentId(instrumentId.getText());
|
||||
}
|
||||
}
|
@ -16,5 +16,10 @@ abstract public class MovingHydrophoneLocator extends SimpleHydrophoneLocator {
|
||||
super(pamArray, streamer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isChangeable() {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -35,6 +35,7 @@ import Array.streamerOrigin.StreamerDataIterator;
|
||||
import GPS.GpsData;
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import PamModel.parametermanager.PrivatePamParameterData;
|
||||
import PamUtils.LatLong;
|
||||
import PamUtils.PamArrayUtils;
|
||||
@ -90,6 +91,33 @@ public class PamArray implements Serializable, Cloneable, ManagedParameters {
|
||||
private String arrayName;
|
||||
|
||||
private String arrayFile;
|
||||
|
||||
/**
|
||||
* Type, used for Tethys and other meta data control
|
||||
*/
|
||||
private String instrumentType;
|
||||
|
||||
/**
|
||||
* Array Id. Can be anything. Compulsory for Tethys.
|
||||
*/
|
||||
private String instrumentId;
|
||||
|
||||
public String getInstrumentType() {
|
||||
return instrumentType;
|
||||
}
|
||||
|
||||
public void setInstrumentType(String instrumentType) {
|
||||
this.instrumentType = instrumentType;
|
||||
}
|
||||
|
||||
public String getInstrumentId() {
|
||||
return instrumentId;
|
||||
}
|
||||
|
||||
public void setInstrumentId(String instrumentId) {
|
||||
this.instrumentId = instrumentId;
|
||||
}
|
||||
|
||||
|
||||
// private int originInterpolation = ORIGIN_USE_LATEST;
|
||||
private int originInterpolation = ORIGIN_USE_PRECEEDING;
|
||||
@ -1574,7 +1602,7 @@ public class PamArray implements Serializable, Cloneable, ManagedParameters {
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
try {
|
||||
Field field = this.getClass().getDeclaredField("streamers");
|
||||
ps.put(new PrivatePamParameterData(this, field) {
|
||||
|
@ -25,6 +25,7 @@ import java.io.Serializable;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -79,7 +80,7 @@ public class Preamplifier implements Serializable, Cloneable, ManagedParameters
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -17,6 +17,7 @@ import PamController.PamController;
|
||||
import PamController.masterReference.MasterReferencePoint;
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import PamModel.parametermanager.PrivatePamParameterData;
|
||||
import PamUtils.LatLong;
|
||||
import PamUtils.PamCalendar;
|
||||
@ -767,7 +768,7 @@ public class Streamer implements Serializable, Cloneable, ManagedParameters {
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
try {
|
||||
Field field = this.getClass().getDeclaredField("coordinate");
|
||||
ps.put(new PrivatePamParameterData(this, field) {
|
||||
|
@ -259,6 +259,7 @@ public class StreamerDialog extends PamDialog {
|
||||
// }
|
||||
singleInstance.currentArray = currentArray;
|
||||
singleInstance.defaultStreamer = streamer;//.clone();
|
||||
// singleInstance.st
|
||||
singleInstance.setParams();
|
||||
singleInstance.setVisible(true);
|
||||
return singleInstance.defaultStreamer;
|
||||
@ -549,6 +550,17 @@ public class StreamerDialog extends PamDialog {
|
||||
pack();
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
OriginSettings os = defaultStreamer.getOriginSettings(currentOriginMethod.getClass());
|
||||
if (os != null) {
|
||||
currentOriginMethod.setOriginSettings(os);
|
||||
}
|
||||
}
|
||||
catch (Exception e) {
|
||||
// will throw if it tries to set the wrong type of settings.
|
||||
}
|
||||
|
||||
enableControls();
|
||||
}
|
||||
|
||||
|
@ -3,6 +3,7 @@ package Array.streamerOrigin;
|
||||
import PamController.SettingsObject;
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
/**
|
||||
* Class to hold settings for the different origin methods.
|
||||
@ -47,7 +48,7 @@ public abstract class OriginSettings implements SettingsObject, Cloneable, Manag
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -5,6 +5,7 @@ import java.util.Arrays;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import mcc.MccJniInterface;
|
||||
import mcc.mccjna.MCCConstants;
|
||||
|
||||
@ -67,7 +68,7 @@ public class ArrayAccelParams implements Serializable, Cloneable, ManagedParamet
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -5,6 +5,7 @@ import java.lang.reflect.Field;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import PamModel.parametermanager.PrivatePamParameterData;
|
||||
import PamView.GroupedSourceParameters;
|
||||
import PamguardMVC.PamConstants;
|
||||
@ -44,7 +45,7 @@ public class AzigramParameters implements Serializable, ManagedParameters, Clone
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
try {
|
||||
Field field = this.getClass().getDeclaredField("name");
|
||||
ps.put(new PrivatePamParameterData(this, field) {
|
||||
|
@ -7,6 +7,7 @@ import org.w3c.dom.Element;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
/**
|
||||
* FilterPArameters for use when the filter is on it's own (within a FilterController)
|
||||
@ -39,7 +40,7 @@ public class FilterParameters_2 implements Serializable, Cloneable, ManagedParam
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -30,6 +30,7 @@ import org.w3c.dom.Element;
|
||||
import PamController.PamControlledUnit;
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import PamUtils.FrequencyFormat;
|
||||
|
||||
/**
|
||||
@ -358,7 +359,7 @@ public class FilterParams implements Serializable, Cloneable, ManagedParameters
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -5,6 +5,7 @@ import java.lang.reflect.Field;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import PamModel.parametermanager.PrivatePamParameterData;
|
||||
|
||||
public class GPSParameters implements Serializable, Cloneable, ManagedParameters {
|
||||
@ -175,7 +176,7 @@ public class GPSParameters implements Serializable, Cloneable, ManagedParameters
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
try {
|
||||
Field field = this.getClass().getDeclaredField("nmeaSource");
|
||||
ps.put(new PrivatePamParameterData(this, field) {
|
||||
|
@ -1,5 +1,6 @@
|
||||
package GPS;
|
||||
|
||||
import PamUtils.PamCalendar;
|
||||
import PamguardMVC.PamDataUnit;
|
||||
|
||||
public class GpsDataUnit extends PamDataUnit {
|
||||
@ -52,12 +53,18 @@ public class GpsDataUnit extends PamDataUnit {
|
||||
*/
|
||||
@Override
|
||||
public String getSummaryString() {
|
||||
// TODO Auto-generated method stub
|
||||
String str = super.getSummaryString();
|
||||
// String str = super.getSummaryString();
|
||||
String str = String.format("<html>%s<br>UID:%d, Database: %d<br>%s<br>",
|
||||
"GPS Data", getUID(), getDatabaseIndex(), PamCalendar.formatDBDateTime(getTimeMilliseconds(), true));
|
||||
if (gpsData != null) {
|
||||
str += gpsData.summaryString();
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double[] getFrequency() {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -17,6 +17,7 @@ import java.lang.reflect.Field;
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PrivatePamParameterData;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import PamView.GroupedSourceParameters;
|
||||
|
||||
public class IshDetParams implements Serializable, Cloneable, ManagedParameters {
|
||||
@ -96,7 +97,7 @@ public class IshDetParams implements Serializable, Cloneable, ManagedParameters
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
try {
|
||||
Field field = this.getClass().getDeclaredField("inputDataSource");
|
||||
ps.put(new PrivatePamParameterData(this, field) {
|
||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
/**
|
||||
* Ishamel display parameters for the Spectrogram plug in.
|
||||
@ -42,7 +43,7 @@ public class IshDisplayParams implements Serializable, Cloneable, ManagedParamet
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
public class KernelSmoothingParameters implements Serializable, Cloneable, ManagedParameters {
|
||||
|
||||
@ -25,7 +26,7 @@ public class KernelSmoothingParameters implements Serializable, Cloneable, Manag
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import fftFilter.FFTFilterParams;
|
||||
|
||||
/**
|
||||
@ -157,7 +158,7 @@ public class DelayMeasurementParams implements Serializable, Cloneable, ManagedP
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
public class MCMCParams2 implements Serializable, Cloneable, ManagedParameters {
|
||||
|
||||
@ -126,7 +127,7 @@ public class MCMCParams2 implements Serializable, Cloneable, ManagedParameters
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
|
||||
public class MCMCParams implements Serializable, Cloneable, ManagedParameters {
|
||||
@ -64,7 +65,7 @@ public class MCMCParams implements Serializable, Cloneable, ManagedParameters {
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
|
||||
/**
|
||||
@ -69,7 +70,7 @@ public class HyperbolicParams implements Serializable, Cloneable, ManagedParamet
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import Spectrogram.WindowFunction;
|
||||
|
||||
/**
|
||||
@ -104,7 +105,7 @@ public class RawOrFFTParams implements Serializable, Cloneable, RawOrFFTParamsIn
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -7,6 +7,7 @@ import java.util.ListIterator;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
/**
|
||||
* PArameters for MapDetectionsManager which
|
||||
@ -65,7 +66,7 @@ public class MapDetectionsParameters implements Serializable, Cloneable, Managed
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -27,6 +27,7 @@ import java.lang.reflect.Field;
|
||||
import Array.Hydrophone;
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import PamModel.parametermanager.PrivatePamParameterData;
|
||||
|
||||
public class MapParameters implements Serializable, Cloneable, ManagedParameters {
|
||||
@ -301,7 +302,7 @@ public class MapParameters implements Serializable, Cloneable, ManagedParameters
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -20,9 +20,15 @@
|
||||
*/
|
||||
package Map;
|
||||
|
||||
import java.awt.Point;
|
||||
import java.awt.event.MouseMotionAdapter;
|
||||
import java.awt.geom.AffineTransform;
|
||||
import java.util.ListIterator;
|
||||
|
||||
import GPS.GPSControl;
|
||||
import GPS.GPSDataBlock;
|
||||
import GPS.GpsDataUnit;
|
||||
import PamController.PamController;
|
||||
import PamUtils.Coordinate3d;
|
||||
import PamUtils.LatLong;
|
||||
import PamUtils.PamCoordinate;
|
||||
@ -385,6 +391,45 @@ public class MapRectProjector extends MapProjector {
|
||||
return xTrans;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getHoverText(Point mousePoint, int ploNumberMatch) {
|
||||
String text = super.getHoverText(mousePoint, ploNumberMatch);
|
||||
if (text == null) {
|
||||
return findGpsTrackText(mousePoint, ploNumberMatch);
|
||||
}
|
||||
else {
|
||||
return text;
|
||||
}
|
||||
}
|
||||
|
||||
private String findGpsTrackText(Point mousePoint, int ploNumberMatch) {
|
||||
GPSControl gpsControl = GPSControl.getGpsControl();
|
||||
if (gpsControl == null) {
|
||||
return null;
|
||||
}
|
||||
LatLong currentPos = getDataPosition(new Coordinate3d(mousePoint.x, mousePoint.y));
|
||||
GPSDataBlock gpsDataBlock = gpsControl.getGpsDataBlock();
|
||||
double dist = Double.MAX_VALUE;
|
||||
GpsDataUnit closest = null;
|
||||
ListIterator<GpsDataUnit> it = gpsDataBlock.getListIterator(0);
|
||||
while (it.hasNext()) {
|
||||
GpsDataUnit gpsUnit = it.next();
|
||||
double r = gpsUnit.getGpsData().distanceToMetres(currentPos);
|
||||
if (r < dist) {
|
||||
dist = r;
|
||||
closest = gpsUnit;
|
||||
}
|
||||
}
|
||||
if (closest == null) {
|
||||
return null;
|
||||
}
|
||||
double rPix = dist*this.pixelsPerMetre;
|
||||
if (rPix > 20) {
|
||||
return null;
|
||||
}
|
||||
return closest.getSummaryString();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
public class GridbaseParameters implements Cloneable, Serializable, ManagedParameters {
|
||||
|
||||
@ -25,7 +26,7 @@ public class GridbaseParameters implements Cloneable, Serializable, ManagedParam
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -24,6 +24,7 @@ import java.io.Serializable;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import serialComms.jserialcomm.PJSerialComm;
|
||||
|
||||
public class NMEAParameters implements Serializable, Cloneable, ManagedParameters {
|
||||
@ -149,7 +150,7 @@ public class NMEAParameters implements Serializable, Cloneable, ManagedParameter
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -33,6 +33,13 @@ public interface OfflineDataStore {
|
||||
*/
|
||||
public String getDataSourceName();
|
||||
|
||||
/**
|
||||
* Get the data location. This may be a specific file, or might be a folder
|
||||
* if data are in many files, a URI, etc.
|
||||
* @return store locations
|
||||
*/
|
||||
public String getDataLocation();
|
||||
|
||||
/**
|
||||
* Load data for a given datablock between two time limits.
|
||||
* @param dataBlock datablock owner of the data
|
||||
|
@ -23,6 +23,7 @@ package PamController;
|
||||
import java.awt.Component;
|
||||
import java.awt.Frame;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JMenu;
|
||||
@ -39,7 +40,9 @@ import org.w3c.dom.Element;
|
||||
import PamController.status.ModuleStatus;
|
||||
import PamController.status.ModuleStatusManager;
|
||||
import PamController.status.ProcessCheck;
|
||||
import PamModel.PamModel;
|
||||
import PamModel.PamModuleInfo;
|
||||
import PamModel.PamPluginInterface;
|
||||
import PamView.ClipboardCopier;
|
||||
import PamView.PamGui;
|
||||
import PamView.PamSidePanel;
|
||||
@ -880,6 +883,23 @@ public abstract class PamControlledUnit implements SettingsNameProvider {
|
||||
public int getInstanceIndex() {
|
||||
return instanceIndex;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get detail if this is a plugin.
|
||||
* @return plugin detail, or null if it's not a plugin.
|
||||
*/
|
||||
public PamPluginInterface getPlugin() {
|
||||
List<PamPluginInterface> pluginList = ((PamModel) PamController.getInstance().getModelInterface()).getPluginList();
|
||||
if (pluginList == null) {
|
||||
return null;
|
||||
}
|
||||
for (PamPluginInterface plugin : pluginList) {
|
||||
if (plugin.getClassName().equals(this.getClass().getName())) {
|
||||
return plugin;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* The PamConfiguration holds the master list of modules which form part of a
|
||||
|
@ -36,6 +36,7 @@ import org.apache.commons.io.input.ClassLoaderObjectInputStream;
|
||||
import PamModel.PamModel;
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import PamView.dialog.warn.WarnOnce;
|
||||
|
||||
|
||||
@ -398,7 +399,7 @@ public class PamControlledUnitSettings implements Serializable, ManagedParameter
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -57,6 +57,7 @@ import fftManager.FFTDataUnit;
|
||||
import generalDatabase.DBControlUnit;
|
||||
import javafx.application.Platform;
|
||||
import javafx.stage.Stage;
|
||||
import metadata.MetaDataContol;
|
||||
import Array.ArrayManager;
|
||||
import PamController.command.MulticastController;
|
||||
import PamController.command.NetworkController;
|
||||
@ -446,6 +447,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
||||
System.out.println("");
|
||||
System.out.println("Note - ignore the following SLF4J warn/error messages, they are not applicable to this application");
|
||||
ArrayManager.getArrayManager(); // create the array manager so that it get's it's settings
|
||||
MetaDataContol.getMetaDataControl();
|
||||
|
||||
/**
|
||||
* Check for archived files and unpack automatically.
|
||||
@ -2426,7 +2428,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
||||
if (dbc == null) {
|
||||
return null;
|
||||
}
|
||||
return dbc.getDatabaseName();
|
||||
return dbc.getLongDatabaseName();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
20
src/PamController/PamSensor.java
Normal file
20
src/PamController/PamSensor.java
Normal file
@ -0,0 +1,20 @@
|
||||
package PamController;
|
||||
|
||||
/**
|
||||
* Interface to define modules which can be considered as sensors of some sort.
|
||||
* e.g. depth and orientation modules and the SoundTrap clickdetecotr
|
||||
* @author dg50
|
||||
*
|
||||
*/
|
||||
public interface PamSensor {
|
||||
|
||||
public String getUnitName();
|
||||
|
||||
public String getUnitType();
|
||||
|
||||
public String getSensorDescription();
|
||||
|
||||
public String getSensorId();
|
||||
|
||||
|
||||
}
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
/**
|
||||
* Very simple class used in an ArrayList of used modules that
|
||||
@ -53,7 +54,7 @@ public class UsedModuleInfo implements Serializable, ManagedParameters {
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -29,6 +29,7 @@ import javax.xml.transform.stream.StreamResult;
|
||||
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
import org.w3c.dom.NamedNodeMap;
|
||||
|
||||
import com.sun.javafx.runtime.VersionInfo;
|
||||
|
||||
@ -42,12 +43,14 @@ import PamController.PamguardVersionInfo;
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterData;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import PamUtils.PamCalendar;
|
||||
import PamUtils.XMLUtils;
|
||||
import PamguardMVC.PamDataBlock;
|
||||
import PamguardMVC.PamDataUnit;
|
||||
import PamguardMVC.PamProcess;
|
||||
import binaryFileStorage.BinaryStore;
|
||||
import tethys.TethysControl;
|
||||
|
||||
/**
|
||||
* Class for writing XML configuration output to a file.
|
||||
@ -62,6 +65,8 @@ public class PamguardXMLWriter implements PamSettings {
|
||||
private static final Set<Class<?>> WRAPPER_TYPES = getWrapperTypes();
|
||||
|
||||
private XMLWriterSettings writerSettings = new XMLWriterSettings();
|
||||
private boolean excludeDisplaySettings;
|
||||
// private String xmlNameSpace;
|
||||
|
||||
private static PamguardXMLWriter singleInstance;
|
||||
|
||||
@ -83,6 +88,19 @@ public class PamguardXMLWriter implements PamSettings {
|
||||
}
|
||||
return singleInstance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Recursively walk the tree and add a namespace to every
|
||||
* single element.
|
||||
* @param doc
|
||||
* @param nameSpace
|
||||
* @return
|
||||
*/
|
||||
public boolean addNameSpaceToElements(Document doc, Element el, String nameSpace) {
|
||||
// el.setAttributeNS(nameSpace, nameSpace, nameSpace);
|
||||
NamedNodeMap attributes = el.getAttributes();
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a document with the options specified in writerSettings.
|
||||
@ -437,8 +455,7 @@ public class PamguardXMLWriter implements PamSettings {
|
||||
* @param pamSettingsUnit
|
||||
* @return xml element
|
||||
*/
|
||||
private Element writeUnitSettings(Document doc, Element parent, PamSettings pamSettingsUnit) {
|
||||
|
||||
public Element writeUnitSettings(Document doc, Element parent, PamSettings pamSettingsUnit) {
|
||||
int[] settingInds = findSettings(null, pamSettingsUnit.getUnitName());
|
||||
PamSettings[] settingsObjects = null;
|
||||
if (settingInds != null) {
|
||||
@ -462,7 +479,7 @@ public class PamguardXMLWriter implements PamSettings {
|
||||
* can be temporary settings objects when writing temporary settings from dialogs.
|
||||
* @return new XML element.
|
||||
*/
|
||||
private Element writeUnitSettings(Document doc, Element parent, PamSettings pamSettingsUnit, PamSettings[] toWrite) {
|
||||
public Element writeUnitSettings(Document doc, Element parent, PamSettings pamSettingsUnit, PamSettings[] toWrite) {
|
||||
Element moduleData = doc.createElement("MODULE");
|
||||
moduleData.setAttribute("Java.class", pamSettingsUnit.getClass().getName());
|
||||
moduleData.setAttribute("UnitType", pamSettingsUnit.getUnitType());
|
||||
@ -483,6 +500,9 @@ public class PamguardXMLWriter implements PamSettings {
|
||||
Element settingEl = doc.createElement("CONFIGURATION");
|
||||
moduleData.appendChild(settingEl);
|
||||
for (int i = 0; i < toWrite.length; i++) {
|
||||
if (wantObject(toWrite[i]) == false) {
|
||||
continue;
|
||||
}
|
||||
Element setEl = writeSettings(doc, toWrite[i], new ArrayList<Object>());
|
||||
if (setEl != null) {
|
||||
settingEl.appendChild(setEl);
|
||||
@ -493,6 +513,32 @@ public class PamguardXMLWriter implements PamSettings {
|
||||
return moduleData;
|
||||
}
|
||||
|
||||
/**
|
||||
* USed by the Tethys writer to avoid writing display settings.
|
||||
* @param pamSettings
|
||||
* @return
|
||||
*/
|
||||
private boolean wantObject(PamSettings pamSettings) {
|
||||
if (excludeDisplaySettings == false) {
|
||||
return true;
|
||||
}
|
||||
Object obj = pamSettings.getSettingsReference();
|
||||
if (obj == null) {
|
||||
return false;
|
||||
}
|
||||
if (obj instanceof ManagedParameters) {
|
||||
ManagedParameters managedParams = (ManagedParameters) obj;
|
||||
PamParameterSet paramSet = managedParams.getParameterSet();
|
||||
if (paramSet == null) {
|
||||
return false;
|
||||
}
|
||||
if (paramSet.getParameterSetType() == ParameterSetType.DISPLAY && excludeDisplaySettings) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Write settings for a settings object, using the standard retreived object
|
||||
* from the settings.
|
||||
@ -504,6 +550,14 @@ public class PamguardXMLWriter implements PamSettings {
|
||||
private Element writeSettings(Document doc, PamSettings pamSettings, ArrayList<Object> objectHierarchy) {
|
||||
return writeSettings(doc, pamSettings, pamSettings.getSettingsReference(), objectHierarchy);
|
||||
}
|
||||
|
||||
public Document writeOneObject(Object data) {
|
||||
Document doc = XMLUtils.createBlankDoc();
|
||||
Element el = doc.createElement("Settings");
|
||||
Element newel = writeObjectData(doc, el, data, new ArrayList<Object>());
|
||||
doc.appendChild(newel);
|
||||
return doc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Write settings using an object of choice instead of the standard one from PamSettings.
|
||||
@ -515,6 +569,7 @@ public class PamguardXMLWriter implements PamSettings {
|
||||
* @return
|
||||
*/
|
||||
private Element writeSettings(Document doc, PamSettings pamSettings, Object data, ArrayList<Object> objectHierarchy) {
|
||||
|
||||
Element el = doc.createElement("SETTINGS");
|
||||
el.setAttribute("Type", pamSettings.getUnitType());
|
||||
el.setAttribute("Name", pamSettings.getUnitName());
|
||||
@ -526,10 +581,13 @@ public class PamguardXMLWriter implements PamSettings {
|
||||
return el;
|
||||
}
|
||||
|
||||
private Element writeObjectData(Document doc, Element el, Object data, ArrayList<Object> objectHierarchy) {
|
||||
public Element writeObjectData(Document doc, Element el, Object data, ArrayList<Object> objectHierarchy) {
|
||||
if (data == null) {
|
||||
return null;
|
||||
}
|
||||
if (objectHierarchy == null) {
|
||||
objectHierarchy = new ArrayList<>();
|
||||
}
|
||||
if (objectHierarchy.contains(data)) {
|
||||
// just write the reference, but nothing else or we'll end up in an infinite loop of objects.
|
||||
Element e = doc.createElement("Object");
|
||||
@ -551,8 +609,10 @@ public class PamguardXMLWriter implements PamSettings {
|
||||
if (parameterSet == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
objectHierarchy.add(data);
|
||||
|
||||
if (objectHierarchy != null) {
|
||||
objectHierarchy.add(data);
|
||||
}
|
||||
for (PamParameterData pamParam:parameterSet.getParameterCollection()) {
|
||||
try {
|
||||
Object paramData = pamParam.getData();
|
||||
@ -825,7 +885,16 @@ public class PamguardXMLWriter implements PamSettings {
|
||||
*/
|
||||
private int[] findSettings(String type, String name) {
|
||||
if (settingsSets == null) {
|
||||
return null;
|
||||
makeSettingsList();
|
||||
if (settingsSets == null) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
if (usedSettingsSets == null) {
|
||||
usedSettingsSets = new boolean[settingsSets.size()];
|
||||
}
|
||||
else if (usedSettingsSets.length < settingsSets.size()) {
|
||||
usedSettingsSets = Arrays.copyOf(usedSettingsSets, settingsSets.size());
|
||||
}
|
||||
int[] found = new int[settingsSets.size()];
|
||||
int nFound = 0;
|
||||
@ -845,7 +914,7 @@ public class PamguardXMLWriter implements PamSettings {
|
||||
return Arrays.copyOf(found, nFound);
|
||||
}
|
||||
|
||||
private ArrayList<PamSettings> makeSettingsList() {
|
||||
public ArrayList<PamSettings> makeSettingsList() {
|
||||
PamSettingManager settingsManager = PamSettingManager.getInstance();
|
||||
settingsSets = settingsManager.getOwners();
|
||||
if (settingsSets == null) {
|
||||
@ -877,6 +946,14 @@ public class PamguardXMLWriter implements PamSettings {
|
||||
return doc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Is this element a writable type ? Basically, this means
|
||||
* that it's a primitive of some sort. Otherwise it's
|
||||
* probably an object and may even be a list in which case
|
||||
* it will need treating differently.
|
||||
* @param clazz
|
||||
* @return
|
||||
*/
|
||||
public static boolean isWritableType(Class<?> clazz)
|
||||
{
|
||||
if (clazz.isEnum()) return true;
|
||||
@ -967,5 +1044,23 @@ public class PamguardXMLWriter implements PamSettings {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the excludeDisplaySettings
|
||||
*/
|
||||
public boolean isExcludeDisplaySettings() {
|
||||
return excludeDisplaySettings;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param excludeDisplaySettings the excludeDisplaySettings to set
|
||||
*/
|
||||
public void setExcludeDisplaySettings(boolean excludeDisplaySettings) {
|
||||
this.excludeDisplaySettings = excludeDisplaySettings;
|
||||
}
|
||||
|
||||
// public void setStaticNameSpace(String xmlNameSpace) {
|
||||
// this.xmlNameSpace = xmlNameSpace;
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
public class XMLWriterSettings implements Serializable, Cloneable, ManagedParameters {
|
||||
|
||||
@ -34,7 +35,7 @@ public class XMLWriterSettings implements Serializable, Cloneable, ManagedParame
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -5,6 +5,7 @@ import java.io.Serializable;
|
||||
import PamController.soundMedium.GlobalMedium.SoundMedium;
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
/**
|
||||
* Stores parameters for the current medium.
|
||||
@ -41,7 +42,7 @@ public class GlobalMediumParams implements Serializable, Cloneable, ManagedParam
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -51,6 +51,8 @@ import rockBlock.RockBlockControl;
|
||||
import tethys.TethysControl;
|
||||
import turbineops.TurbineOperationControl;
|
||||
import GPS.GpsDataUnit;
|
||||
import Map.MapController;
|
||||
import Map.gridbaselayer.GridbaseControl;
|
||||
import NMEA.NMEADataUnit;
|
||||
import PamController.PamControlledUnitSettings;
|
||||
import PamController.PamController;
|
||||
@ -64,6 +66,7 @@ import PamguardMVC.PamDataBlock;
|
||||
import analogarraysensor.ArraySensorControl;
|
||||
import backupmanager.BackupManager;
|
||||
import beamformer.continuous.BeamFormerControl;
|
||||
import beamformer.localiser.BeamFormLocaliserControl;
|
||||
import bearinglocaliser.BearingLocaliserControl;
|
||||
import binaryFileStorage.SecondaryBinaryStore;
|
||||
import cepstrum.CepstrumControl;
|
||||
@ -458,17 +461,17 @@ final public class PamModel implements PamSettings {
|
||||
mi.setMaxNumber(1);
|
||||
|
||||
|
||||
mi = PamModuleInfo.registerControlledUnit(MetaDataContol.class.getName(), MetaDataContol.unitType);
|
||||
mi.setToolTipText("Deployment Meta Data");
|
||||
mi.setModulesMenuGroup(utilitiesGroup);
|
||||
mi.setMaxNumber(1);
|
||||
// mi = PamModuleInfo.registerControlledUnit(MetaDataContol.class.getName(), MetaDataContol.unitType);
|
||||
// mi.setToolTipText("Project Meta Data");
|
||||
// mi.setModulesMenuGroup(utilitiesGroup);
|
||||
// mi.setMaxNumber(1);
|
||||
|
||||
if (isViewer) {
|
||||
mi = PamModuleInfo.registerControlledUnit(TethysControl.class.getName(), TethysControl.defaultName);
|
||||
mi.setToolTipText("Interface to Tethys Database");
|
||||
mi.setModulesMenuGroup(utilitiesGroup);
|
||||
mi.setMaxNumber(1);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* ************* End Utilities Group *******************
|
||||
@ -1076,7 +1079,7 @@ final public class PamModel implements PamSettings {
|
||||
// clear the current list
|
||||
pluginList.clear();
|
||||
daqList.clear();
|
||||
|
||||
|
||||
/*
|
||||
* If developing a new PAMPlugin in eclipse, the easiest way to do it is to make a new
|
||||
* Eclipse project for your plugin code. Within that project, copy this PamModel class
|
||||
@ -1091,6 +1094,8 @@ final public class PamModel implements PamSettings {
|
||||
* When you export the code for your plugin to a jar file, remember to NOT inlcude the copy of
|
||||
* PamModel !
|
||||
*/
|
||||
|
||||
// pluginList.add(new MorlaisWP1aPlugin());
|
||||
|
||||
// Load up whatever default classloader was used to create this class. Must use the same classloader
|
||||
// for all plugins, or else we will not be able to create proper dependencies between them or be able
|
||||
@ -1158,11 +1163,30 @@ final public class PamModel implements PamSettings {
|
||||
// to add that URL to the default classloader path.
|
||||
URL newURL = jarList.get(i).toURI().toURL();
|
||||
|
||||
// original method
|
||||
// Method method = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);
|
||||
// method.setAccessible(true);
|
||||
// method.invoke(cl, newURL);
|
||||
|
||||
// first fix attempt - create a brand new URLClassLoader. As expected, we get a ClassCastException when trying
|
||||
// to load the parameters so we can't save params using this method
|
||||
// URL[] newURLArray = new URL[1];
|
||||
// newURLArray[0] = newURL;
|
||||
// cl = new URLClassLoader(newURLArray);
|
||||
|
||||
// second attempt - custom class loader with the system app loader specified as the parent. Loads controlled unit, but
|
||||
// as before it doesn't load the parameters
|
||||
classLoader.addURL(newURL);
|
||||
|
||||
// third attempt
|
||||
// Class<?> genericClass = cl.getClass();
|
||||
// Method method = genericClass.getSuperclass().getDeclaredMethod("addURL", new Class[] {URL.class});
|
||||
// method.setAccessible(true);
|
||||
// method.invoke(cl, new Object[] {newURL});
|
||||
|
||||
|
||||
|
||||
|
||||
// Save the name of the class to the global pluginBeingLoaded variable, and load the class.
|
||||
this.setPluginBeingLoaded(className);
|
||||
// Class c = cl.loadClass(className);
|
||||
@ -1243,8 +1267,9 @@ final public class PamModel implements PamSettings {
|
||||
"for help.<p>" +
|
||||
"This plug-in will not be available for loading";
|
||||
String help = null;
|
||||
int ans = WarnOnce.showWarning(PamController.getInstance().getGuiFrameManager().getFrame(0), title, msg, WarnOnce.WARNING_MESSAGE, help, e1);
|
||||
int ans = WarnOnce.showWarning(PamController.getMainFrame(), title, msg, WarnOnce.WARNING_MESSAGE, help, e1);
|
||||
System.err.println("Exception while loading " + className);
|
||||
System.err.println(e1.getMessage());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@ -1257,7 +1282,7 @@ final public class PamModel implements PamSettings {
|
||||
"for help.<p>" +
|
||||
"This plug-in will not be available for loading";
|
||||
String help = null;
|
||||
int ans = WarnOnce.showWarning(PamController.getInstance().getGuiFrameManager().getFrame(0), title, msg, WarnOnce.WARNING_MESSAGE, help, ex);
|
||||
int ans = WarnOnce.showWarning(PamController.getMainFrame(), title, msg, WarnOnce.WARNING_MESSAGE, help, ex);
|
||||
System.err.println("Exception while loading " + jarList.get(i).getName());
|
||||
continue;
|
||||
}
|
||||
@ -1282,7 +1307,7 @@ final public class PamModel implements PamSettings {
|
||||
|
||||
// instantiate the plugin control class using the custom class loader
|
||||
try {
|
||||
// File classFile = new File(pf.getJarFile());
|
||||
File classFile = new File(pf.getJarFile());
|
||||
//URLClassLoader cl = new URLClassLoader(new URL[]{classFile.toURI().toURL()});
|
||||
// mi = PamModuleInfo.registerControlledUnit(pf.getClassName(), pf.getDescription(),cl);
|
||||
mi = PamModuleInfo.registerControlledUnit(pf.getClassName(), pf.getDescription(),classLoader);
|
||||
@ -1348,7 +1373,7 @@ final public class PamModel implements PamSettings {
|
||||
"for help.<p>" +
|
||||
"This plug-in will not be available for loading";
|
||||
String help = null;
|
||||
int ans = WarnOnce.showWarning(PamController.getInstance().getGuiFrameManager().getFrame(0), title, msg, WarnOnce.WARNING_MESSAGE, help, e1);
|
||||
int ans = WarnOnce.showWarning(PamController.getMainFrame(), title, msg, WarnOnce.WARNING_MESSAGE, help, e1);
|
||||
System.err.println("Exception while loading " + pf.getDefaultName());
|
||||
pluginList.remove(pf);
|
||||
continue;
|
||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
public class PamModelSettings implements Cloneable, Serializable, ManagedParameters {
|
||||
|
||||
@ -74,7 +75,7 @@ public class PamModelSettings implements Cloneable, Serializable, ManagedParamet
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -29,6 +29,9 @@ public class PamParameterSet {
|
||||
|
||||
private static boolean printDebug = false;
|
||||
|
||||
public enum ParameterSetType {DETECTOR, DISPLAY};
|
||||
|
||||
private ParameterSetType parameterSetType;
|
||||
/**
|
||||
* Standard modifiers to exclude. This is important for many classes which will tend to
|
||||
* do crazy things such as incorporate ALL of their final fields, e.g. when a Color
|
||||
@ -55,8 +58,10 @@ public class PamParameterSet {
|
||||
* in the STANDARD_MODIFIER_EXCLUSIONS list (FINAL or STATIC).
|
||||
* @return Created parameter set.
|
||||
*/
|
||||
public static PamParameterSet autoGenerate(Object parentObject) {
|
||||
return autoGenerate(parentObject, STANDARD_MODIFIER_EXCLUSIONS);
|
||||
public static PamParameterSet autoGenerate(Object parentObject, ParameterSetType parameterSetType) {
|
||||
PamParameterSet paramSet = autoGenerate(parentObject, STANDARD_MODIFIER_EXCLUSIONS);
|
||||
paramSet.setParameterSetType(parameterSetType);
|
||||
return paramSet;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -287,4 +292,18 @@ public class PamParameterSet {
|
||||
return parameterDatas.remove(paramName);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the parameterSetType
|
||||
*/
|
||||
public ParameterSetType getParameterSetType() {
|
||||
return parameterSetType;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param parameterSetType the parameterSetType to set
|
||||
*/
|
||||
public void setParameterSetType(ParameterSetType parameterSetType) {
|
||||
this.parameterSetType = parameterSetType;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -26,6 +26,7 @@ import java.io.Serializable;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
/**
|
||||
* Class definition for a x,y coordinate number type.
|
||||
@ -168,7 +169,7 @@ public class Coordinate3d implements Serializable , Cloneable, PamCoordinate, Ma
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -15,6 +15,7 @@ import java.text.NumberFormat;
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PrivatePamParameterData;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import PamguardMVC.PamConstants;
|
||||
import net.sf.geographiclib.Geodesic;
|
||||
import net.sf.geographiclib.PolygonArea;
|
||||
@ -833,7 +834,7 @@ public class LatLong implements Serializable, Cloneable, Transferable, PamCoordi
|
||||
*/
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
try {
|
||||
Field field = this.getClass().getDeclaredField("height");
|
||||
ps.put(new PrivatePamParameterData(this, field) {
|
||||
|
@ -47,10 +47,7 @@ public class PamCalendar {
|
||||
|
||||
public static TimeZone defaultTimeZone = TimeZone.getTimeZone("UTC");
|
||||
|
||||
/*
|
||||
* Not used: all now handled in PamCalendar.
|
||||
*/
|
||||
// private static TimeZone localTimeZone = defaultTimeZone;// TimeZone.getDefault();
|
||||
private static TimeZone localTimeZone = defaultTimeZone;// TimeZone.getDefault();
|
||||
|
||||
public static final long millisPerDay = 1000L*24L*3600L;
|
||||
|
||||
@ -63,7 +60,7 @@ public class PamCalendar {
|
||||
private static boolean soundFile;
|
||||
|
||||
/**
|
||||
* time from the start of the file to the current moment.
|
||||
* time from the start of the file to the currentmoment.
|
||||
* This is updated every time data re read from the file, so is
|
||||
* accurate to about 1/10 second.
|
||||
* For accurate timing within detectors, always try to use sample number
|
||||
@ -180,44 +177,8 @@ public class PamCalendar {
|
||||
|
||||
public static TimeZone getDisplayTimeZone(boolean useLocal) {
|
||||
// return TimeZone.getTimeZone("UTC");
|
||||
return useLocal ? CalendarControl.getInstance().getChosenTimeZone() : defaultTimeZone;
|
||||
// return useLocal ? localTimeZone : defaultTimeZone;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the display time zone offset in milliseconds.
|
||||
* @param useLocal
|
||||
* @return
|
||||
*/
|
||||
public static long getDisplayTimeZoneOffest(boolean useLocal) {
|
||||
TimeZone tz = getDisplayTimeZone(useLocal);
|
||||
return tz.getOffset(getTimeInMillis());
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a short string describing the time zone. This should be less than
|
||||
* 10 characters. So if the full name of the TZ is long, then write it
|
||||
* in the format "UTC+..."
|
||||
* @param useLocal
|
||||
* @return
|
||||
*/
|
||||
public static String getShortDisplayTimeZoneString(boolean useLocal) {
|
||||
TimeZone tz = getDisplayTimeZone(useLocal);
|
||||
String str = tz.getDisplayName();
|
||||
str = CalendarControl.getInstance().getTZCode(true);
|
||||
if (str.length() <= 10) {
|
||||
return str;
|
||||
}
|
||||
// otherwise make up a string.
|
||||
long offset = getDisplayTimeZoneOffest(useLocal) / 1000;
|
||||
boolean isInt = offset % 3600 == 0;
|
||||
if (isInt) {
|
||||
str = String.format("UTC%+d", offset/3600);
|
||||
}
|
||||
else {
|
||||
str = String.format("UTC%+3.1f", (double) offset/3600.);
|
||||
}
|
||||
return str;
|
||||
// return useLocal ? CalendarControl.getInstance().getChosenTimeZone() : defaultTimeZone;
|
||||
return useLocal ? localTimeZone : defaultTimeZone;
|
||||
}
|
||||
|
||||
public static String formatDateTime(Date date) {
|
||||
@ -430,13 +391,8 @@ public class PamCalendar {
|
||||
|
||||
public static String formatDBStyleTime(long timeInMillis, boolean showMillis, boolean useLocal) {
|
||||
Calendar c = Calendar.getInstance();
|
||||
TimeZone tz = getDisplayTimeZone(useLocal);
|
||||
// if (tz != null) {
|
||||
// long offs = tz.getOffset(timeInMillis);
|
||||
// timeInMillis += tz.getOffset(timeInMillis);
|
||||
// }
|
||||
c.setTimeInMillis(timeInMillis);
|
||||
c.setTimeZone(tz);
|
||||
c.setTimeZone(getDisplayTimeZone(useLocal));
|
||||
DateFormat df;
|
||||
if (showMillis) {
|
||||
df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
|
||||
@ -444,7 +400,7 @@ public class PamCalendar {
|
||||
else {
|
||||
df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
}
|
||||
df.setTimeZone(tz);
|
||||
df.setTimeZone(getDisplayTimeZone(useLocal));
|
||||
Date d = c.getTime();
|
||||
// return String.format("%tY-%<tm-%<td %<tH:%<tM:%<tS", d);
|
||||
|
||||
@ -776,7 +732,6 @@ public class PamCalendar {
|
||||
public static long msFromDateString(String dateString) {
|
||||
return msFromDateString(dateString, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Read a date string and turn it into a millisecond time.
|
||||
* @param dateString
|
||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
public class GlobalTimeParameters implements Serializable, Cloneable, ManagedParameters {
|
||||
|
||||
@ -91,7 +92,7 @@ public class GlobalTimeParameters implements Serializable, Cloneable, ManagedPar
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -5,6 +5,7 @@ import java.util.TimeZone;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
public class TimeDisplayParameters implements Serializable, Cloneable, ManagedParameters {
|
||||
|
||||
@ -34,7 +35,7 @@ public class TimeDisplayParameters implements Serializable, Cloneable, ManagedPa
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
public class NMEATimeParameters implements Serializable, Cloneable, ManagedParameters {
|
||||
|
||||
@ -26,7 +27,7 @@ public class NMEATimeParameters implements Serializable, Cloneable, ManagedParam
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
public class NTPTimeParameters implements Serializable, Cloneable, ManagedParameters {
|
||||
|
||||
@ -32,7 +33,7 @@ public class NTPTimeParameters implements Serializable, Cloneable, ManagedParame
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -5,6 +5,7 @@ import java.io.Serializable;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
/**
|
||||
* A series of functions for creating arrays of colours
|
||||
@ -410,7 +411,7 @@ public class ColourArray implements Cloneable, Serializable, ManagedParameters {
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -265,6 +265,11 @@ public abstract class GeneralProjector<T extends PamCoordinate> {
|
||||
|
||||
JComponent toolTipComponent;
|
||||
|
||||
/**
|
||||
* Gets an adapter that can provide tooltips automatically based on plotted data units.
|
||||
* @param component
|
||||
* @return
|
||||
*/
|
||||
public MouseHoverAdapter getMouseHoverAdapter(JComponent component) {
|
||||
ToolTipManager tt = ToolTipManager.sharedInstance();
|
||||
tt.registerComponent(component);
|
||||
@ -384,7 +389,9 @@ public abstract class GeneralProjector<T extends PamCoordinate> {
|
||||
}
|
||||
String hintText = dataBlock.getHoverText(this, hoveredDataUnit, hoverData.get(unitIndex).getAmbiguity());
|
||||
|
||||
if (hintText == null) return null;
|
||||
if (hintText == null) {
|
||||
return null;
|
||||
}
|
||||
// System.out.println(hintText);
|
||||
return hintText;
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import PamUtils.PamUtils;
|
||||
import PamView.dialog.GroupedSourcePanel;
|
||||
|
||||
@ -210,7 +211,7 @@ public class GroupedSourceParameters implements Serializable, Cloneable, Managed
|
||||
*/
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -7,6 +7,7 @@ import java.util.ArrayList;
|
||||
import PamController.PamControlledUnit;
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import PamModel.parametermanager.PrivatePamParameterData;
|
||||
|
||||
/**
|
||||
@ -55,7 +56,7 @@ public class GuiFrameSettings implements Serializable, Cloneable, ManagedParamet
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||
try {
|
||||
Field field = this.getClass().getDeclaredField("unitFrameInfo");
|
||||
ps.put(new PrivatePamParameterData(this, field) {
|
||||
@ -89,7 +90,7 @@ public class GuiFrameSettings implements Serializable, Cloneable, ManagedParamet
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||
try {
|
||||
Field field = this.getClass().getDeclaredField("guiFrame");
|
||||
ps.put(new PrivatePamParameterData(this, field) {
|
||||
|
@ -61,6 +61,7 @@ import javax.swing.JMenuBar;
|
||||
import javax.swing.JMenuItem;
|
||||
import javax.swing.JOptionPane;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JRootPane;
|
||||
import javax.swing.SwingConstants;
|
||||
import javax.swing.SwingUtilities;
|
||||
import javax.swing.Timer;
|
||||
@ -73,6 +74,7 @@ import javax.swing.event.MenuListener;
|
||||
|
||||
import Acquisition.DaqSystemInterface;
|
||||
import annotation.tasks.AnnotationManager;
|
||||
import metadata.MetaDataContol;
|
||||
import performanceTests.PerformanceDialog;
|
||||
import tipOfTheDay.TipOfTheDayManager;
|
||||
import Array.ArrayManager;
|
||||
@ -761,6 +763,7 @@ public class PamGui extends PamView implements WindowListener, PamSettings {
|
||||
//for changing "hydrophones" to "microphone" and vice versa if medium changes.
|
||||
menu.addMenuListener(new SettingsMenuListener());
|
||||
|
||||
menu.add(MetaDataContol.getMetaDataControl().createMenu(frame));
|
||||
|
||||
menu.addSeparator();
|
||||
|
||||
@ -1666,10 +1669,10 @@ public class PamGui extends PamView implements WindowListener, PamSettings {
|
||||
protected void getGuiParameters() {
|
||||
guiParameters.extendedState = frame.getExtendedState();
|
||||
guiParameters.state = frame.getState();
|
||||
if (guiParameters.state != Frame.MAXIMIZED_BOTH) {
|
||||
// if (guiParameters.state != Frame.MAXIMIZED_BOTH) {
|
||||
guiParameters.size = frame.getSize();
|
||||
guiParameters.bounds = frame.getBounds();
|
||||
}
|
||||
// }
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1984,6 +1987,30 @@ public class PamGui extends PamView implements WindowListener, PamSettings {
|
||||
public PamTabbedPane getTabbedPane() {
|
||||
return this.mainTab;
|
||||
}
|
||||
|
||||
/**
|
||||
* find a parent window for a JComponent. This can be useful in
|
||||
* finding windows to open child dialogs when the object holding
|
||||
* the component may not have a direct reference back to it's dialog.
|
||||
* @param component any Swing component
|
||||
* @return parent Window (or frame) if it can be found
|
||||
*/
|
||||
public static Window findComponentWindow(JComponent component) {
|
||||
if (component == null) {
|
||||
return null;
|
||||
}
|
||||
JRootPane root = component.getRootPane();
|
||||
if (root == null) {
|
||||
return null;
|
||||
}
|
||||
Container rootP = root.getParent();
|
||||
if (rootP instanceof Window) {
|
||||
return (Window) rootP;
|
||||
}
|
||||
else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -38,6 +38,7 @@ import javax.swing.JPanel;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import PamView.PamColors.PamColor;
|
||||
import PamView.symbol.SymbolData;
|
||||
|
||||
@ -808,7 +809,7 @@ public class PamSymbol extends PamSymbolBase implements Serializable, Icon, Clon
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -48,6 +48,7 @@ public class WarnOnce implements PamSettings {
|
||||
int ans = showWarning(parent, "Warning Messages", "Show all PAMGuard warning messages", WarnOnce.OK_CANCEL_OPTION);
|
||||
if (ans == WarnOnce.CANCEL_OPTION) return;
|
||||
singleInstance.warnOnceList.clearList();
|
||||
singleInstance.showThisSess.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
public class OverlayDataInfo implements Serializable, Cloneable, ManagedParameters {
|
||||
|
||||
@ -31,7 +32,7 @@ public class OverlayDataInfo implements Serializable, Cloneable, ManagedParamete
|
||||
*/
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -6,6 +6,7 @@ import java.util.Hashtable;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import PamModel.parametermanager.PrivatePamParameterData;
|
||||
import PamguardMVC.PamDataBlock;
|
||||
|
||||
@ -73,7 +74,7 @@ public class MarkDataSelectorParams implements Serializable, Cloneable, ManagedP
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||
try {
|
||||
Field field = this.getClass().getDeclaredField("overlayChoices");
|
||||
ps.put(new PrivatePamParameterData(this, field) {
|
||||
|
@ -3,7 +3,11 @@ package PamView.symbol;
|
||||
import java.io.Serializable;
|
||||
import java.util.Hashtable;
|
||||
|
||||
public class ManagedSymbolData implements Cloneable, Serializable {
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
public class ManagedSymbolData implements Cloneable, Serializable, ManagedParameters {
|
||||
|
||||
public static final long serialVersionUID = 1L;
|
||||
|
||||
@ -34,5 +38,10 @@ public class ManagedSymbolData implements Cloneable, Serializable {
|
||||
return symbolOptions;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
return PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
160
src/PamView/wizard/PamWizard.java
Normal file
160
src/PamView/wizard/PamWizard.java
Normal file
@ -0,0 +1,160 @@
|
||||
package PamView.wizard;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.CardLayout;
|
||||
import java.awt.Component;
|
||||
import java.awt.Window;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JPanel;
|
||||
|
||||
import PamView.dialog.PamDialog;
|
||||
import tethys.swing.export.ExportStreamInfoPanel;
|
||||
import tethys.swing.export.ExportWizardCard;
|
||||
|
||||
abstract public class PamWizard extends PamDialog {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private JPanel cardPanel;
|
||||
|
||||
private CardLayout cardLayout;
|
||||
|
||||
private JPanel mainPanel;
|
||||
|
||||
private JButton prevButton;
|
||||
|
||||
private ArrayList<PamWizardCard> wizardCards = new ArrayList();
|
||||
|
||||
public PamWizard(Window parentFrame, String title) {
|
||||
super(parentFrame, title, false);
|
||||
|
||||
cardLayout = new CardLayout();
|
||||
mainPanel = new JPanel(new BorderLayout());
|
||||
cardPanel = new JPanel(cardLayout);
|
||||
mainPanel.add(BorderLayout.CENTER, cardPanel);
|
||||
|
||||
setDialogComponent(mainPanel);
|
||||
|
||||
getOkButton().setText("Finish");
|
||||
prevButton = new JButton("Previous");
|
||||
getButtonPanel().add(prevButton, 0);
|
||||
prevButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
previousButton();
|
||||
}
|
||||
});
|
||||
|
||||
setResizable(true);
|
||||
}
|
||||
|
||||
public void addCard(PamWizardCard wizPanel) {
|
||||
cardPanel.add(wizPanel, wizPanel.getTitle());
|
||||
wizardCards.add(wizPanel);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the main panel. This is the main dialog panel and uses a borderlayout
|
||||
* with the cards in the CENTER of the panel. Additional information panels
|
||||
* (generally fixed and not changing with the dialog) can be added NORTH, SOUTH, WEST and EAST.
|
||||
* @return main Panel.
|
||||
*/
|
||||
public JPanel getMainPanel() {
|
||||
return mainPanel;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when 'previous' button is clicked.
|
||||
*/
|
||||
protected void previousButton() {
|
||||
cardLayout.previous(cardPanel);
|
||||
enableControls();
|
||||
}
|
||||
|
||||
public void enableControls() {
|
||||
int iCard = getCardIndex();
|
||||
prevButton.setEnabled(iCard > 0);
|
||||
boolean isLast = iCard == wizardCards.size()-1;
|
||||
// getOkButton().setEnabled(!isLast);
|
||||
getOkButton().setText(isLast ? "Finish" : "Next");
|
||||
}
|
||||
|
||||
private boolean checkCurrentCard() {
|
||||
int iCard = getCardIndex();
|
||||
if (iCard < 0) {
|
||||
return true;
|
||||
}
|
||||
return getCardParams(wizardCards.get(iCard));
|
||||
}
|
||||
|
||||
abstract public void setCardParams(PamWizardCard wizardCard);
|
||||
|
||||
abstract public boolean getCardParams(PamWizardCard wizardCard);
|
||||
|
||||
public int getCardIndex() {
|
||||
for (int i = 0; i < cardPanel.getComponentCount(); i++) {
|
||||
Component component = cardPanel.getComponent(i);
|
||||
if (component.isVisible()) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
public JButton getPreviousButton() {
|
||||
return prevButton;
|
||||
}
|
||||
|
||||
public void setParams() {
|
||||
for (PamWizardCard wizCard : wizardCards) {
|
||||
setCardParams(wizCard);
|
||||
}
|
||||
enableControls();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getParams() {
|
||||
/**
|
||||
* This is the OK button, so we need to NOT return OK, which would close the
|
||||
* dialog until we're on the last card.
|
||||
*/
|
||||
if (checkCurrentCard() == false) {
|
||||
return false;
|
||||
}
|
||||
int iCard = getCardIndex();
|
||||
if (iCard < wizardCards.size()-1) {
|
||||
cardLayout.next(cardPanel);
|
||||
enableControls();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void restoreDefaultSettings() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Move to the first card in the stack
|
||||
*/
|
||||
public void moveFirst() {
|
||||
cardLayout.first(cardPanel);
|
||||
}
|
||||
|
||||
/**
|
||||
* Move to the last card in the stack
|
||||
*/
|
||||
public void moveLast() {
|
||||
cardLayout.last(cardPanel);
|
||||
}
|
||||
|
||||
}
|
45
src/PamView/wizard/PamWizardCard.java
Normal file
45
src/PamView/wizard/PamWizardCard.java
Normal file
@ -0,0 +1,45 @@
|
||||
package PamView.wizard;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import javax.swing.JPanel;
|
||||
|
||||
|
||||
/**
|
||||
* Base class for PAMGuard wizard cards.
|
||||
* @author dg50
|
||||
*
|
||||
* @param <T> class type for parameters to set and get.
|
||||
*/
|
||||
abstract public class PamWizardCard<T extends Object> extends JPanel {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private String title;
|
||||
|
||||
private PamWizard pamWizard;
|
||||
|
||||
/**
|
||||
* @param title
|
||||
*/
|
||||
public PamWizardCard(PamWizard pamWizard, String title) {
|
||||
this.pamWizard = pamWizard;
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public abstract boolean getParams(T cardParams);
|
||||
|
||||
public abstract void setParams(T cardParams);
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the pamWizard
|
||||
*/
|
||||
public PamWizard getPamWizard() {
|
||||
return pamWizard;
|
||||
}
|
||||
|
||||
}
|
29
src/PamguardMVC/DataAutomation.java
Normal file
29
src/PamguardMVC/DataAutomation.java
Normal file
@ -0,0 +1,29 @@
|
||||
package PamguardMVC;
|
||||
|
||||
/**
|
||||
* @author dg50
|
||||
* Levels of automation for the various datas in PAMGuard.
|
||||
* Should be used within DataAutomationInfo to perhaps combine with other info in the future.
|
||||
*
|
||||
*/
|
||||
public enum DataAutomation {
|
||||
|
||||
AUTOMATIC, MANUAL, MANUALANDAUTOMATIC;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
switch (this) {
|
||||
case AUTOMATIC:
|
||||
return "Automatic";
|
||||
case MANUAL:
|
||||
return "Manual";
|
||||
case MANUALANDAUTOMATIC:
|
||||
return "Manual and automatic";
|
||||
default:
|
||||
break;
|
||||
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
44
src/PamguardMVC/DataAutomationInfo.java
Normal file
44
src/PamguardMVC/DataAutomationInfo.java
Normal file
@ -0,0 +1,44 @@
|
||||
package PamguardMVC;
|
||||
|
||||
/**
|
||||
* Returned by datablocks, though default is null, to give information on how
|
||||
* automatic the process was.
|
||||
* @author dg50
|
||||
*
|
||||
*/
|
||||
public class DataAutomationInfo {
|
||||
|
||||
|
||||
private DataAutomation automation;
|
||||
|
||||
/**
|
||||
* @param automation
|
||||
*/
|
||||
public DataAutomationInfo(DataAutomation automation) {
|
||||
this.setAutomation(automation);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the automation
|
||||
*/
|
||||
public DataAutomation getAutomation() {
|
||||
return automation;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param automation the automation to set
|
||||
*/
|
||||
public void setAutomation(DataAutomation automation) {
|
||||
this.automation = automation;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
if (automation == null) {
|
||||
return "Unknown data automation";
|
||||
}
|
||||
return automation.toString();
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -50,8 +50,10 @@ import org.w3c.dom.Element;
|
||||
import Acquisition.AcquisitionControl;
|
||||
import Acquisition.AcquisitionProcess;
|
||||
import pamScrollSystem.ViewLoadObserver;
|
||||
import tethys.TethysControl;
|
||||
import tethys.pamdata.AutoTethysProvider;
|
||||
import tethys.pamdata.TethysDataProvider;
|
||||
import tethys.species.DataBlockSpeciesManager;
|
||||
import dataGram.DatagramProvider;
|
||||
import dataMap.BespokeDataMapGraphic;
|
||||
import dataMap.OfflineDataMap;
|
||||
@ -74,8 +76,10 @@ import PamguardMVC.background.BackgroundDataBlock;
|
||||
import PamguardMVC.background.BackgroundManager;
|
||||
import PamguardMVC.dataOffline.OfflineDataLoadInfo;
|
||||
import PamguardMVC.dataOffline.OfflineDataLoading;
|
||||
import PamguardMVC.dataSelector.DataSelectParams;
|
||||
import PamguardMVC.dataSelector.DataSelector;
|
||||
import PamguardMVC.dataSelector.DataSelectorCreator;
|
||||
import PamguardMVC.dataSelector.DataSelectorSettings;
|
||||
import PamguardMVC.dataSelector.NullDataSelectorCreator;
|
||||
import PamguardMVC.datamenus.DataMenuParent;
|
||||
import PamguardMVC.nanotime.NanoTimeCalculator;
|
||||
@ -2838,7 +2842,7 @@ public class PamDataBlock<Tunit extends PamDataUnit> extends PamObservable {
|
||||
* @return temporary copy of the data
|
||||
*/
|
||||
public ArrayList<Tunit> getDataCopy(long t1, long t2, boolean assumeOrder, DataSelector dataSelector) {
|
||||
if (dataSelector == null) {
|
||||
if (dataSelector == null || dataSelector.getParams().getCombinationFlag() == DataSelectParams.DATA_SELECT_DISABLE) {
|
||||
return getDataCopy(t1, t2, assumeOrder);
|
||||
}
|
||||
else {
|
||||
@ -2868,8 +2872,6 @@ public class PamDataBlock<Tunit extends PamDataUnit> extends PamObservable {
|
||||
private Vector<OfflineDataMap> offlineDataMaps = null;
|
||||
|
||||
private SQLLogging logging;
|
||||
|
||||
private TethysDataProvider tethysDataProvider;
|
||||
|
||||
private JSONObjectDataSource jsonDataSource;
|
||||
|
||||
@ -3085,22 +3087,30 @@ public class PamDataBlock<Tunit extends PamDataUnit> extends PamObservable {
|
||||
|
||||
/**
|
||||
* Gets a data provider for Tethys. These will probably need
|
||||
* to be bespoke, but for now will autogenerate based on the SALLogging information.
|
||||
* to be bespoke, but for now will autogenerate based on the SQLLogging information.
|
||||
* @return the tethysDataProvider
|
||||
*/
|
||||
public TethysDataProvider getTethysDataProvider() {
|
||||
if (tethysDataProvider == null && PamDetection.class.isAssignableFrom(unitClass) && getLogging() != null) {
|
||||
tethysDataProvider = new AutoTethysProvider(this);
|
||||
}
|
||||
return tethysDataProvider;
|
||||
public TethysDataProvider getTethysDataProvider(TethysControl tethysControl) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a data provider for Tethys.
|
||||
* @param tethysDataProvider the tethysDataProvider to set
|
||||
* Get the level of automation employed by the generation of these data.
|
||||
* Should ideally be completed for everything providing data to Tethys.
|
||||
* @return level of automation for this data block.
|
||||
*/
|
||||
public void setTethysDataProvider(TethysDataProvider tethysDataProvider) {
|
||||
this.tethysDataProvider = tethysDataProvider;
|
||||
public DataAutomationInfo getDataAutomationInfo() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get information about species types that may occur within this data
|
||||
* block. Primarily for conversion into Tethys compatible data, but may
|
||||
* prove to have other uses.
|
||||
* @return Types of species information available within this datablock.
|
||||
*/
|
||||
public DataBlockSpeciesManager<Tunit> getDatablockSpeciesManager() {
|
||||
return null;
|
||||
}
|
||||
|
||||
final public boolean getCanLog() {
|
||||
|
@ -974,8 +974,13 @@ abstract public class PamDataUnit<T extends PamDataUnit, U extends PamDataUnit>
|
||||
|
||||
|
||||
// add frequency and amplitude information
|
||||
str += "Frequency: " + FrequencyFormat.formatFrequencyRange(this.getFrequency(), true) + "<br>";
|
||||
str += String.format("Amplitude: %3.1fdB<br>", getAmplitudeDB());
|
||||
double[] frequency = this.getFrequency();
|
||||
if (frequency != null) {
|
||||
str += "Frequency: " + FrequencyFormat.formatFrequencyRange(this.getFrequency(), true) + "<br>";
|
||||
}
|
||||
if (getAmplitudeDB() != 0) {
|
||||
str += String.format("Amplitude: %3.1fdB<br>", getAmplitudeDB());
|
||||
}
|
||||
if (getSignalSPL() != null) {
|
||||
str += String.format("SPL: %3.1fdBre1uPa<br>",linAmplitudeToDB(getSignalSPL()));
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
public class RawDataDisplayOptions implements Serializable, Cloneable, ManagedParameters {
|
||||
|
||||
@ -13,7 +14,7 @@ public class RawDataDisplayOptions implements Serializable, Cloneable, ManagedPa
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -61,7 +61,7 @@ public class RawDataUnavailableException extends Exception {
|
||||
return String.format("Samples %d length %d requested from %s have not yet arrived",
|
||||
startSample, duration, rawDataBlock.getDataName());
|
||||
case INVALID_CHANNEL_LIST:
|
||||
return String.format("Samples %d length %d requested from %s do not contain the reqeusted channels %s",
|
||||
return String.format("Samples %d length %d requested from %s do not contain the reqeusted channels",
|
||||
startSample, duration, rawDataBlock.getDataName());
|
||||
case NEGATIVE_DURATION:
|
||||
return String.format("Negative data duration request for %d samples" , duration);
|
||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import gpl.GPLParameters;
|
||||
|
||||
/**
|
||||
@ -44,7 +45,7 @@ public class PamBlockParams implements Cloneable, Serializable, ManagedParameter
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
/**
|
||||
* Data select parameters.
|
||||
@ -53,7 +54,7 @@ abstract public class DataSelectParams implements Serializable, ManagedParameter
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -9,7 +9,10 @@ import javax.swing.ImageIcon;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JMenuItem;
|
||||
|
||||
import org.w3c.dom.Document;
|
||||
|
||||
import PamController.PamController;
|
||||
import PamController.settings.output.xml.PamguardXMLWriter;
|
||||
import PamView.dialog.PamDialogPanel;
|
||||
import PamView.dialog.SettingsButton;
|
||||
import PamguardMVC.PamDataBlock;
|
||||
@ -39,7 +42,7 @@ public abstract class DataSelector {
|
||||
private String selectorTitle;
|
||||
|
||||
private boolean allowScores;
|
||||
|
||||
|
||||
/**
|
||||
* Create a data selector for a DataBlock. If allowScores is
|
||||
* true, then the selector MAY (but may not) offer a more complicated
|
||||
@ -104,18 +107,8 @@ public abstract class DataSelector {
|
||||
if (parentFrame == null) {
|
||||
parentFrame = PamController.getMainFrame();
|
||||
}
|
||||
Window localWin = parentFrame;
|
||||
DataSelectorChangeListener localChangeListener = changeListener;
|
||||
JMenuItem menuItem = new JMenuItem("Data selection ...");
|
||||
menuItem.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
boolean ok = showSelectDialog(localWin);
|
||||
if (ok && changeListener != null) {
|
||||
changeListener.selectorChange(DataSelector.this);
|
||||
}
|
||||
}
|
||||
});
|
||||
menuItem.addActionListener(new ShowSettingsButton(parentFrame, changeListener));
|
||||
return menuItem;
|
||||
}
|
||||
|
||||
@ -129,6 +122,24 @@ public abstract class DataSelector {
|
||||
return ok;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get descriptive text about the data selector which can be
|
||||
* added to dialogs and other information panels.
|
||||
* @return descriptive text. Default is a xml dump of params.
|
||||
*/
|
||||
public String getDescription() {
|
||||
if (getParams() == null) {
|
||||
return null;
|
||||
}
|
||||
PamguardXMLWriter xmlWriter = PamguardXMLWriter.getXMLWriter();
|
||||
Document doc = xmlWriter.writeOneObject(getParams());
|
||||
if (doc != null) {
|
||||
String str = xmlWriter.getAsString(doc, true);
|
||||
return str;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Score a PAMDataUnit. this is used in preference
|
||||
* to a boolean select function so that the user can add different
|
||||
@ -228,25 +239,40 @@ public abstract class DataSelector {
|
||||
* @param parentWindow
|
||||
*/
|
||||
public JButton getDialogButton(Window parentWindow) {
|
||||
return getDialogButton(parentWindow, null);
|
||||
}
|
||||
/**
|
||||
* Create a settings type button that can be inserted into a
|
||||
* larger dialog.
|
||||
* @param parentWindow
|
||||
*/
|
||||
|
||||
public JButton getDialogButton(Window parentWindow, DataSelectorChangeListener changeListener) {
|
||||
JButton button = new SettingsButton();
|
||||
button.addActionListener(new ShowSettingsButton(parentWindow));
|
||||
button.addActionListener(new ShowSettingsButton(parentWindow, changeListener));
|
||||
button.setToolTipText("Data selection options for " + getSelectorTitle());
|
||||
return button;
|
||||
}
|
||||
|
||||
private class ShowSettingsButton implements ActionListener {
|
||||
private Window parentWindow;
|
||||
private DataSelectorChangeListener changeListener;
|
||||
/**
|
||||
* @param parentWindow
|
||||
* @param changeListener
|
||||
*/
|
||||
public ShowSettingsButton(Window parentWindow) {
|
||||
public ShowSettingsButton(Window parentWindow, DataSelectorChangeListener changeListener) {
|
||||
super();
|
||||
this.parentWindow = parentWindow;
|
||||
this.changeListener = changeListener;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
showSelectDialog(parentWindow);
|
||||
boolean ok = showSelectDialog(parentWindow);
|
||||
if (ok && changeListener != null) {
|
||||
changeListener.selectorChange(DataSelector.this);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ import java.util.Hashtable;
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PrivatePamParameterData;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
public class DataSelectorSettings implements Serializable, ManagedParameters {
|
||||
|
||||
@ -42,7 +43,7 @@ public class DataSelectorSettings implements Serializable, ManagedParameters {
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
try {
|
||||
Field field = this.getClass().getDeclaredField("selectorParams");
|
||||
ps.put(new PrivatePamParameterData(this, field) {
|
||||
|
@ -7,6 +7,7 @@ import java.util.Hashtable;
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PrivatePamParameterData;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
public class DataKeeperSettings implements Serializable, Cloneable, ManagedParameters {
|
||||
|
||||
@ -51,7 +52,7 @@ public class DataKeeperSettings implements Serializable, Cloneable, ManagedParam
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
try {
|
||||
Field field = this.getClass().getDeclaredField("keepTimeData");
|
||||
ps.put(new PrivatePamParameterData(this, field) {
|
||||
|
@ -6,6 +6,7 @@ import Localiser.DelayMeasurementParams;
|
||||
import Localiser.controls.RawOrFFTParams;
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
/**
|
||||
* General parameters for detection TOAD measurement. Is split
|
||||
@ -67,7 +68,7 @@ public class GenericTOADSourceParams implements Cloneable, Serializable, Managed
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -218,7 +218,7 @@ public class RWEBinaryDataSource extends BinaryDataSource {
|
||||
binaryObjectData.getDataUnitBaseData().setSampleDuration(duration);
|
||||
// rweDataUnit = new RWEDataUnit(aSound.timeMilliseconds, channelMap,
|
||||
// startSample, duration, aSound);
|
||||
rweDataUnit = new RWEDataUnit(binaryObjectData.getDataUnitBaseData(), aSound);
|
||||
rweDataUnit = new RWEDataUnit(rweProcess, binaryObjectData.getDataUnitBaseData(), aSound);
|
||||
rweDataUnit.setSequenceBitmap(sequenceMap);
|
||||
double f[] = new double[2];
|
||||
f[0] = aSound.minFreq * rweDataBlock.getSampleRate()/rweDataBlock.getFftLength();
|
||||
|
@ -2,19 +2,29 @@ package RightWhaleEdgeDetector;
|
||||
|
||||
import PamView.GroupedDataSource;
|
||||
import PamView.GroupedSourceParameters;
|
||||
import PamguardMVC.DataAutomation;
|
||||
import PamguardMVC.DataAutomationInfo;
|
||||
import PamguardMVC.PamProcess;
|
||||
import PamguardMVC.dataOffline.OfflineDataLoadInfo;
|
||||
import PamguardMVC.dataSelector.DataSelectorCreator;
|
||||
import RightWhaleEdgeDetector.datasel.RWDataSelCreator;
|
||||
import RightWhaleEdgeDetector.species.RWSpeciesManager;
|
||||
import RightWhaleEdgeDetector.species.RWTethysDataProvider;
|
||||
import pamScrollSystem.ViewLoadObserver;
|
||||
import tethys.TethysControl;
|
||||
import tethys.pamdata.TethysDataProvider;
|
||||
import tethys.species.DataBlockSpeciesManager;
|
||||
import whistlesAndMoans.AbstractWhistleDataBlock;
|
||||
|
||||
public class RWEDataBlock extends AbstractWhistleDataBlock implements GroupedDataSource {
|
||||
public class RWEDataBlock extends AbstractWhistleDataBlock<RWEDataUnit> implements GroupedDataSource {
|
||||
|
||||
private double[] rwFreqRange = {50., 250.};
|
||||
private RWEControl rweControl;
|
||||
private RWEProcess rweProcess;
|
||||
private RWDataSelCreator dataSelCreator;
|
||||
|
||||
private RWSpeciesManager rwSpeciesManager;
|
||||
private RWTethysDataProvider rwTethysDataProvider;
|
||||
|
||||
public RWEDataBlock(RWEControl rweControl, String dataName,
|
||||
RWEProcess rweProcess, int channelMap) {
|
||||
@ -53,4 +63,25 @@ public class RWEDataBlock extends AbstractWhistleDataBlock implements GroupedDat
|
||||
return dataSelCreator;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataBlockSpeciesManager<RWEDataUnit> getDatablockSpeciesManager() {
|
||||
if (rwSpeciesManager == null) {
|
||||
rwSpeciesManager = new RWSpeciesManager(this);
|
||||
}
|
||||
return rwSpeciesManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TethysDataProvider getTethysDataProvider(TethysControl tethysControl) {
|
||||
if (rwTethysDataProvider == null) {
|
||||
rwTethysDataProvider = new RWTethysDataProvider(tethysControl, rweProcess.getRweDataBlock());
|
||||
}
|
||||
return rwTethysDataProvider;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataAutomationInfo getDataAutomationInfo() {
|
||||
return new DataAutomationInfo(DataAutomation.AUTOMATIC);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -6,26 +6,31 @@ import whistlesAndMoans.AbstractWhistleDataUnit;
|
||||
public class RWEDataUnit extends AbstractWhistleDataUnit {
|
||||
|
||||
public RWESound rweSound;
|
||||
private RWEProcess rweProcess;
|
||||
|
||||
public RWEDataUnit(long timeMilliseconds, int channelBitmap,
|
||||
public RWEDataUnit(RWEProcess rweProcess, long timeMilliseconds, int channelBitmap,
|
||||
long startSample, long duration, RWESound rweSound) {
|
||||
super(timeMilliseconds, channelBitmap, startSample, duration);
|
||||
this.rweSound = rweSound;
|
||||
this.rweProcess = rweProcess;
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
public RWEDataUnit(DataUnitBaseData basicData, RWESound rweSound) {
|
||||
public RWEDataUnit(RWEProcess rweProcess, DataUnitBaseData basicData, RWESound rweSound) {
|
||||
super(basicData);
|
||||
this.rweSound = rweSound;
|
||||
this.rweProcess = rweProcess;
|
||||
}
|
||||
|
||||
double[] freqsHz;
|
||||
@Override
|
||||
public double[] getFreqsHz() {
|
||||
if (freqsHz == null) {
|
||||
freqsHz = new double[rweSound.sliceCount];
|
||||
double[] f = new double[rweSound.sliceCount];
|
||||
RWEDataBlock rweDataBlock = rweProcess.getRweDataBlock();
|
||||
double binToHz = rweDataBlock.getSampleRate() / rweDataBlock.getFftLength();
|
||||
for (int i = 0; i < f.length; i++) {
|
||||
f[i] = (double) rweSound.peakFreq[i] * binToHz;
|
||||
}
|
||||
return null;
|
||||
return f;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -35,8 +40,16 @@ public class RWEDataUnit extends AbstractWhistleDataUnit {
|
||||
|
||||
@Override
|
||||
public double[] getTimesInSeconds() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
if (rweSound == null) {
|
||||
return null;
|
||||
}
|
||||
double[] t = new double[rweSound.sliceCount];
|
||||
RWEDataBlock rweDataBlock = rweProcess.getRweDataBlock();
|
||||
double binToT = rweDataBlock.getFftHop() / rweDataBlock.getSampleRate();
|
||||
for (int i = 0; i < t.length; i++) {
|
||||
t[i] = (double) rweSound.sliceList[i] * binToT;
|
||||
}
|
||||
return t;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
public class RWEParameters implements Serializable, Cloneable, ManagedParameters {
|
||||
|
||||
@ -41,7 +42,7 @@ public class RWEParameters implements Serializable, Cloneable, ManagedParameters
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
@ -42,6 +42,10 @@ public class RWEProcess extends PamProcess {
|
||||
private FFTDataBlock sourceDataBlock;
|
||||
private RWEDataBlock rweDataBlock;
|
||||
|
||||
public RWEDataBlock getRweDataBlock() {
|
||||
return rweDataBlock;
|
||||
}
|
||||
|
||||
private Hashtable<Integer, BearingLocaliser> bearingLocalisers;
|
||||
private StandardSymbolManager symbolManager;
|
||||
/**
|
||||
@ -212,7 +216,7 @@ public class RWEProcess extends PamProcess {
|
||||
// System.out.println(String.format("Detected sound type %d on channel %d",
|
||||
// soundType, this.iChannel));
|
||||
duration = sourceDataBlock.getFftHop() * aSound.duration;
|
||||
rweDataUnit = new RWEDataUnit(aSound.timeMilliseconds,
|
||||
rweDataUnit = new RWEDataUnit(RWEProcess.this, aSound.timeMilliseconds,
|
||||
1<<iChannel, fftDataUnit.getStartSample()-duration, duration, aSound);
|
||||
rweDataUnit.sortOutputMaps(sourceDataBlock.getChannelMap(), sourceDataBlock.getSequenceMapObject(), 1<<iChannel);
|
||||
f[0] = aSound.minFreq * getSampleRate()/sourceDataBlock.getFftLength();
|
||||
|
28
src/RightWhaleEdgeDetector/species/RWSpeciesManager.java
Normal file
28
src/RightWhaleEdgeDetector/species/RWSpeciesManager.java
Normal file
@ -0,0 +1,28 @@
|
||||
package RightWhaleEdgeDetector.species;
|
||||
|
||||
import PamguardMVC.PamDataBlock;
|
||||
import RightWhaleEdgeDetector.RWEDataUnit;
|
||||
import tethys.species.DataBlockSpeciesManager;
|
||||
import tethys.species.DataBlockSpeciesCodes;
|
||||
import tethys.species.SpeciesMapItem;
|
||||
|
||||
public class RWSpeciesManager extends DataBlockSpeciesManager<RWEDataUnit> {
|
||||
|
||||
private RWSpeciesTypes rwSpeciesTypes = new RWSpeciesTypes();
|
||||
|
||||
public RWSpeciesManager(PamDataBlock<RWEDataUnit> dataBlock) {
|
||||
super(dataBlock);
|
||||
setDefaultDefaultSpecies(new SpeciesMapItem(RWSpeciesTypes.eubalaena, RWSpeciesTypes.onlyType, RWSpeciesTypes.defaultName));
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataBlockSpeciesCodes getSpeciesCodes() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSpeciesCode(RWEDataUnit dataUnit) {
|
||||
return RWSpeciesTypes.defaultName;
|
||||
}
|
||||
|
||||
}
|
17
src/RightWhaleEdgeDetector/species/RWSpeciesTypes.java
Normal file
17
src/RightWhaleEdgeDetector/species/RWSpeciesTypes.java
Normal file
@ -0,0 +1,17 @@
|
||||
package RightWhaleEdgeDetector.species;
|
||||
|
||||
import tethys.species.DataBlockSpeciesCodes;
|
||||
|
||||
public class RWSpeciesTypes extends DataBlockSpeciesCodes {
|
||||
|
||||
public static final String onlyType = "Up call";
|
||||
|
||||
public static final int eubalaena = 180536;
|
||||
|
||||
public static final String defaultName = "Right Whale";
|
||||
|
||||
public RWSpeciesTypes() {
|
||||
super(eubalaena, defaultName, onlyType);
|
||||
}
|
||||
|
||||
}
|
37
src/RightWhaleEdgeDetector/species/RWTethysDataProvider.java
Normal file
37
src/RightWhaleEdgeDetector/species/RWTethysDataProvider.java
Normal file
@ -0,0 +1,37 @@
|
||||
package RightWhaleEdgeDetector.species;
|
||||
|
||||
import PamguardMVC.PamDataBlock;
|
||||
import PamguardMVC.PamDataUnit;
|
||||
import RightWhaleEdgeDetector.RWEDataUnit;
|
||||
import nilus.Detection;
|
||||
import nilus.Detection.Parameters;
|
||||
import tethys.TethysControl;
|
||||
import tethys.output.StreamExportParams;
|
||||
import tethys.output.TethysExportParams;
|
||||
import tethys.pamdata.AutoTethysProvider;
|
||||
|
||||
public class RWTethysDataProvider extends AutoTethysProvider {
|
||||
|
||||
public RWTethysDataProvider(TethysControl tethysControl, PamDataBlock pamDataBlock) {
|
||||
super(tethysControl, pamDataBlock);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Detection createDetection(PamDataUnit dataUnit, TethysExportParams tethysExportParams,
|
||||
StreamExportParams streamExportParams) {
|
||||
Detection detection = super.createDetection(dataUnit, tethysExportParams, streamExportParams);
|
||||
if (detection == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
RWEDataUnit rweDataUnit = (RWEDataUnit) dataUnit;
|
||||
|
||||
Parameters parameters = detection.getParameters();
|
||||
parameters.setScore((double) rweDataUnit.rweSound.soundType);
|
||||
double snr = 20.*Math.log10(rweDataUnit.rweSound.signal/rweDataUnit.rweSound.noise);
|
||||
parameters.setSNRDB(snr);
|
||||
|
||||
return detection;
|
||||
}
|
||||
|
||||
}
|
@ -16,6 +16,7 @@ import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterData;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PrivatePamParameterData;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import PamUtils.PamUtils;
|
||||
import PamguardMVC.PamRawDataBlock;
|
||||
import SoundRecorder.trigger.RecorderTrigger;
|
||||
@ -443,7 +444,7 @@ public class RecorderSettings implements Serializable, Cloneable, ManagedParamet
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
try {
|
||||
Field field = this.getClass().getDeclaredField("channelBitmap");
|
||||
ps.put(new PrivatePamParameterData(this, field) {
|
||||
|
@ -6,6 +6,7 @@ import java.lang.reflect.Field;
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PrivatePamParameterData;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
|
||||
/**
|
||||
* Information for triggered recordings to tell each recorder how long
|
||||
@ -271,7 +272,7 @@ public class RecorderTriggerData implements Serializable, Cloneable, ManagedPara
|
||||
*/
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||
try {
|
||||
Field field = this.getClass().getDeclaredField("lastTriggerStart");
|
||||
ps.put(new PrivatePamParameterData(this, field) {
|
||||
|
@ -1642,6 +1642,9 @@ InternalFrameListener, DisplayPanelContainer, SpectrogramParametersUser, PamSett
|
||||
return;
|
||||
}
|
||||
long t1 = dataUnit.getTimeMilliseconds()-viewerScroller.getValueMillis();
|
||||
if (timeAxis == null) {
|
||||
return;
|
||||
}
|
||||
int x1 = (int) Math.floor(timeAxis.getPosition(t1/1000));
|
||||
int x2 = x1;
|
||||
if (dataUnit.getDurationInMilliseconds() != null) {
|
||||
|
@ -136,7 +136,9 @@ public class UserInputLogger extends SQLLogging {
|
||||
if (dataUnit != null && dataUnit.getDatabaseIndex() != databaseIndex) {
|
||||
dataUnit.setDatabaseIndex(databaseIndex);
|
||||
dataUnit.setUserString(dataUnit.getUserString() + " " + txt);
|
||||
getPamDataBlock().updatePamData(dataUnit, timeMilliseconds);
|
||||
// don't call this next line, it causes the unit to get relogged.
|
||||
// getPamDataBlock().updatePamData(dataUnit, timeMilliseconds);
|
||||
dataUnit.clearUpdateCount();
|
||||
}
|
||||
else {
|
||||
dataUnit = new UserInputDataUnit(timeMilliseconds, txt);
|
||||
|
@ -6,6 +6,7 @@ import java.lang.reflect.Field;
|
||||
|
||||
import PamModel.parametermanager.ManagedParameters;
|
||||
import PamModel.parametermanager.PamParameterSet;
|
||||
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||
import PamModel.parametermanager.PrivatePamParameterData;
|
||||
|
||||
public class AlarmParameters implements Serializable, Cloneable, ManagedParameters {
|
||||
@ -103,7 +104,7 @@ public class AlarmParameters implements Serializable, Cloneable, ManagedParamete
|
||||
|
||||
@Override
|
||||
public PamParameterSet getParameterSet() {
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
||||
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||
try {
|
||||
Field field = this.getClass().getDeclaredField("hadHold");
|
||||
ps.put(new PrivatePamParameterData(this, field) {
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user