diff --git a/pom.xml b/pom.xml
index e187f178..f68a2585 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
org.pamguard
Pamguard
- 2.02.04a
+ 2.02.04f
Pamguard Java12+
Pamguard for Java 12+, using Maven to control dependcies
www.pamguard.org
diff --git a/src/PamView/symbol/PamSymbolManager.java b/src/PamView/symbol/PamSymbolManager.java
index 31264eda..96d74f46 100644
--- a/src/PamView/symbol/PamSymbolManager.java
+++ b/src/PamView/symbol/PamSymbolManager.java
@@ -222,6 +222,9 @@ abstract public class PamSymbolManager implements Pa
* @param psc
*/
private void addSuperDetectionModifiers(PamSymbolChooser psc) {
+ /**
+ * This is going in an infinite loop. Need to do something to stop it !
+ */
ArrayList superDetBlocks = OfflineSuperDetFilter.findPossibleSuperDetections(getPamDataBlock());
// Debug.out.println("The number of super det datablock is: " + superDetBlocks + " for the chooser: " + psc);
@@ -233,6 +236,12 @@ abstract public class PamSymbolManager implements Pa
if (superMan == null) {
continue;
}
+ if (superBlock == getPamDataBlock()) {
+ continue;
+ }
+ if (superBlock.getClass() == getPamDataBlock().getClass()) {
+ continue;
+ }
// Debug.out.println("The number of super det datablock superMan: " + superMan + " for the chooser: " + psc);
PamSymbolChooser superSC = superMan.getSymbolChooser("Super det': " + psc.getDisplayName(), psc.getProjector());
diff --git a/src/clickTrainDetector/CTDetectionGroupDataUnit.java b/src/clickTrainDetector/CTDetectionGroupDataUnit.java
index c0f4cb55..e7464363 100644
--- a/src/clickTrainDetector/CTDetectionGroupDataUnit.java
+++ b/src/clickTrainDetector/CTDetectionGroupDataUnit.java
@@ -46,6 +46,7 @@ public abstract class CTDetectionGroupDataUnit extends DetectionGroupDataUnit im
public int addSubDetections(List list) {
int h = super.addSubDetections(list);
this.calcMinMaxAng();
+
//make sure there is a non null start sample otherwise
//the click trian detector will crash in real time mode.
// this.calcStartSample();
diff --git a/src/clickTrainDetector/ClickTrainProcess.java b/src/clickTrainDetector/ClickTrainProcess.java
index 76b4ca6a..54f7b9f6 100644
--- a/src/clickTrainDetector/ClickTrainProcess.java
+++ b/src/clickTrainDetector/ClickTrainProcess.java
@@ -86,13 +86,20 @@ public class ClickTrainProcess extends PamInstantProcess {
//TODO - this is a bit messy. Ideally probably should have the datablock's long name in the settings but
//this would break previous configurations...
- sourceDataBlock = PamController.getInstance().getDataBlock(ClickDetection.class,
- getClickTrainParams().dataSourceName);
+// sourceDataBlock = PamController.getInstance().getDataBlock(ClickDetection.class,
+// getClickTrainParams().dataSourceName);
+ /*
+ * Identify by long name since that is unique, otherwise doesn't work with multiple click detectors.
+ */
+ sourceDataBlock = PamController.getInstance().getDataBlockByLongName(getClickTrainParams().dataSourceName);
+ if (sourceDataBlock == null) {
+ // otherwise find any click detector.
+ sourceDataBlock = PamController.getInstance().getDataBlock(ClickDetection.class, 0);
+ }
if (sourceDataBlock==null) {
sourceDataBlock = PamController.getInstance().getDataBlock(CPODClick.class,
getClickTrainParams().dataSourceName);
-
}
//System.out.println("CPOD sample rate: " + sourceDataBlock.getSampleRate());
diff --git a/src/clickTrainDetector/classification/bearingClassifier/BearingClassifier.java b/src/clickTrainDetector/classification/bearingClassifier/BearingClassifier.java
index 0507f367..9ff2a1a6 100644
--- a/src/clickTrainDetector/classification/bearingClassifier/BearingClassifier.java
+++ b/src/clickTrainDetector/classification/bearingClassifier/BearingClassifier.java
@@ -154,7 +154,6 @@ public class BearingClassifier implements CTClassifier {
Debug.out.println("SPECIESID!! " + speciesID);
-
return new BearingClassification(speciesID, meanBearingD, medianBearingD, stdBearingD);
}
diff --git a/src/clickTrainDetector/classification/standardClassifier/StandardClassifier.java b/src/clickTrainDetector/classification/standardClassifier/StandardClassifier.java
index eef29887..285e0acd 100644
--- a/src/clickTrainDetector/classification/standardClassifier/StandardClassifier.java
+++ b/src/clickTrainDetector/classification/standardClassifier/StandardClassifier.java
@@ -116,7 +116,7 @@ public class StandardClassifier implements CTClassifier {
for (int i=0; i {
*/
public T getLastDataUnit() {
if (this.dataUnits==null) return null;
+ if (this.dataUnits.size()<1) return null;
return dataUnits.get(dataUnits.size()-1);
}
diff --git a/src/clickTrainDetector/layout/CTFXGUI.java b/src/clickTrainDetector/layout/CTFXGUI.java
index bdf3098c..e0839fac 100644
--- a/src/clickTrainDetector/layout/CTFXGUI.java
+++ b/src/clickTrainDetector/layout/CTFXGUI.java
@@ -61,7 +61,7 @@ public class CTFXGUI extends PamControlledGUIFX {
//data source may have potentially changed. e.g. by a datamodelfx Need to set in params.
//System.out.println("FFTControl: CHANGED_PROCESS_SETTINGS : " +fftProcess.getParentDataBlock());
if (clickTrainControl.getClickTrainProcess().getParentDataBlock()!=null){
- clickTrainControl.getClickTrainParams().dataSourceName=clickTrainControl.getClickTrainProcess().getParentDataBlock().getDataName();
+ clickTrainControl.getClickTrainParams().dataSourceName=clickTrainControl.getClickTrainProcess().getParentDataBlock().getLongDataName();
}
else clickTrainControl.getClickTrainParams().dataSourceName="";
break;
diff --git a/src/clickTrainDetector/layout/CTSwingGUI.java b/src/clickTrainDetector/layout/CTSwingGUI.java
index 47d0cd13..73fac248 100644
--- a/src/clickTrainDetector/layout/CTSwingGUI.java
+++ b/src/clickTrainDetector/layout/CTSwingGUI.java
@@ -94,7 +94,7 @@ public class CTSwingGUI extends PamControlledGUISwing {
@Override
public JMenuItem createDetectionMenu(Frame parentFrame) {
- JMenu submenu = new JMenu("Click Train Detector");
+ JMenu submenu = new JMenu(clickTrainControl.getUnitName());
JMenuItem menuItem = new JMenuItem("Detection Settings ...");
diff --git a/src/clickTrainDetector/layout/ClickTrainAlgorithmPaneFX.java b/src/clickTrainDetector/layout/ClickTrainAlgorithmPaneFX.java
index 50af611e..fffe6516 100644
--- a/src/clickTrainDetector/layout/ClickTrainAlgorithmPaneFX.java
+++ b/src/clickTrainDetector/layout/ClickTrainAlgorithmPaneFX.java
@@ -408,7 +408,7 @@ public class ClickTrainAlgorithmPaneFX extends SettingsPane {
public ClickTrainParams getParams(ClickTrainParams currParams) {
try {
currParams.dataSourceIndex = sourcePane.getSourceIndex();
- currParams.dataSourceName = sourcePane.getSourceName();
+ currParams.dataSourceName = sourcePane.getSourceLongName();
//use the data selector.
@@ -511,7 +511,7 @@ public class ClickTrainAlgorithmPaneFX extends SettingsPane {
// and fill in the data source list (may have changed - or might in later versions)
ArrayList rd = PamController.getInstance().getDataBlocks(ClickDetection.class, true);
- PamDataBlock datablock = PamController.getInstance().getRawDataBlock(clickTrainParams.dataSourceName);
+ PamDataBlock datablock = PamController.getInstance().getDataBlockByLongName(clickTrainParams.dataSourceName);
//use the data selector.
dataSelectorCheckBox.setSelected(clickTrainParams.useDataSelector);
diff --git a/src/clickTrainDetector/layout/classification/CTClassifierPane.java b/src/clickTrainDetector/layout/classification/CTClassifierPane.java
index 24fdb7d5..6bbc3e60 100644
--- a/src/clickTrainDetector/layout/classification/CTClassifierPane.java
+++ b/src/clickTrainDetector/layout/classification/CTClassifierPane.java
@@ -170,12 +170,17 @@ public class CTClassifierPane extends PamBorderPane {
// break;
// }
// }
+
classifierListBox.getSelectionModel().select(params.type);
+
+
setClassifierPane(params.type);
//species Id
setBasicParams(params);
+
+
// //when setting parameters have to figure out what pane to create first!
// currentClassifier = clickTrainControl.getClassifierManager().createClassifier(params.type);
// //Classifier pane
@@ -197,7 +202,9 @@ public class CTClassifierPane extends PamBorderPane {
*/
private void setClassifierPane(CTClassifierType ctClassifierType) {
if (ctClassifierType==null) return;
+
currentClassifier = clickTrainControl.getClassifierManager().createClassifier(ctClassifierType);
+
//Classifier pane- this also sets parameters for the classifier specific pane
if (currentClassifier.getCTClassifierGraphics()!=null) {
settingsHolder.setCenter(currentClassifier.getCTClassifierGraphics().getCTClassifierPane());
diff --git a/src/clickTrainDetector/layout/classification/CTClassifiersPane.java b/src/clickTrainDetector/layout/classification/CTClassifiersPane.java
index 31f946af..2fb86573 100644
--- a/src/clickTrainDetector/layout/classification/CTClassifiersPane.java
+++ b/src/clickTrainDetector/layout/classification/CTClassifiersPane.java
@@ -228,6 +228,7 @@ public class CTClassifiersPane extends PamBorderPane {
//set the parameters.
tab = (ClassifierTab) pamTabPane.getTabs().get(i);
+
//set the parameters for the tab.
tab.getCTClassifierPane().setParams(clickTrainParams.ctClassifierParams[i]);
}
diff --git a/src/clickTrainDetector/layout/classification/bearingClassifier/BearingClassifierGraphics.java b/src/clickTrainDetector/layout/classification/bearingClassifier/BearingClassifierGraphics.java
index 8e9ac6fd..049d6e6e 100644
--- a/src/clickTrainDetector/layout/classification/bearingClassifier/BearingClassifierGraphics.java
+++ b/src/clickTrainDetector/layout/classification/bearingClassifier/BearingClassifierGraphics.java
@@ -41,7 +41,7 @@ public class BearingClassifierGraphics implements CTClassifierGraphics {
bearingClassifierPane = new BearingClassifierPane(bearingClassifer);
}
//params are set here.
- bearingClassifierPane.setParams(bearingClassifer.getParams());
+ //bearingClassifierPane.setParams(bearingClassifer.getParams()); <- warning - causes an error in which params are overriden
return (Pane) bearingClassifierPane.getContentNode();
}
diff --git a/src/clickTrainDetector/layout/classification/bearingClassifier/BearingClassifierPane.java b/src/clickTrainDetector/layout/classification/bearingClassifier/BearingClassifierPane.java
index c91465f9..d56a8c8e 100644
--- a/src/clickTrainDetector/layout/classification/bearingClassifier/BearingClassifierPane.java
+++ b/src/clickTrainDetector/layout/classification/bearingClassifier/BearingClassifierPane.java
@@ -105,7 +105,7 @@ public class BearingClassifierPane extends SettingsPane implements Detection
this.sR=sR;
int[] minmax = getAxisMinMaxSamples(plotProjector);
-
- if (minmax[1]>=data.getSampleDuration()) minmax[1]=(int) (data.getSampleDuration()-1);
+
+ if (data.getSampleDuration()!=null) {
+ if (minmax[1]>=data.getSampleDuration()) minmax[1]=(int) (data.getSampleDuration()-1);
+ }
if (minmax[0]<0 || minmax[0]>=minmax[1]) minmax[0]=0;
+
//System.out.println("Min max: " + minmax[0] + " " + minmax[1]);
diff --git a/src/pamViewFX/fxNodes/utilsFX/PamUtilsFX.java b/src/pamViewFX/fxNodes/utilsFX/PamUtilsFX.java
index 19536ab8..a0d976b2 100644
--- a/src/pamViewFX/fxNodes/utilsFX/PamUtilsFX.java
+++ b/src/pamViewFX/fxNodes/utilsFX/PamUtilsFX.java
@@ -14,7 +14,9 @@ import javax.swing.JCheckBoxMenuItem;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
+import javax.swing.JPopupMenu.Separator;
import javax.swing.JRadioButtonMenuItem;
+import javax.swing.JSeparator;
import javax.swing.SwingUtilities;
import PamView.PamSymbol;
@@ -197,6 +199,12 @@ public class PamUtilsFX {
if (JMenuItem.class.isAssignableFrom(item.getClass())) {
itemList.add(swingMenuItemToFX( (JMenuItem) item));
}
+ else {
+ Component unkItem = item;
+ if (item instanceof Separator) {
+// MenuItem mi = new Separator();
+ }
+ }
}
return itemList;
@@ -300,6 +308,9 @@ public class PamUtilsFX {
radioItem.setSelected(((JRadioButtonMenuItem) swingItem).isSelected());
}
+// else if (swingItem.getClass() == JSeparator.class) {
+//
+// }
if (fxItem == null) {
return null;
}