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; }