From 35ee1e3dfc936db830383576b005d985130da99d Mon Sep 17 00:00:00 2001
From: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date: Thu, 17 Nov 2022 19:00:45 +0000
Subject: [PATCH 1/3] Slipped in a last fix
after release to correctly size components in PamModel viewer which
weren't showing on hiDef correctly.
---
src/Map/MapParametersDialog.java | 6 +++---
src/PamController/SettingsFileDialog.java | 1 +
src/PamView/PamObjectViewer.java | 18 ++++++++++++++++++
src/PamView/dialog/PamDialog.java | 20 +++++++++++++++++++-
src/generalDatabase/DBSchemaWriter.java | 2 --
5 files changed, 41 insertions(+), 6 deletions(-)
diff --git a/src/Map/MapParametersDialog.java b/src/Map/MapParametersDialog.java
index ec6a5d15..03d77300 100644
--- a/src/Map/MapParametersDialog.java
+++ b/src/Map/MapParametersDialog.java
@@ -63,7 +63,7 @@ public class MapParametersDialog extends PamDialog {
private JCheckBox headingUp = new JCheckBox("Ship heading always up");
- private JCheckBox showSurface = new JCheckBox("Show sea sueface");
+ private JCheckBox showSurface = new JCheckBox("Show sea surface");
private MapFileManager mapFileManager;
@@ -261,7 +261,7 @@ public class MapParametersDialog extends PamDialog {
public HydrophonePanel() {
super();
- setBorder(new TitledBorder("Hydropone Options"));
+ setBorder(new TitledBorder("Hydrophone Options"));
setLayout(new GridBagLayout());
GridBagConstraints c = new PamGridBagContraints();
c.gridx = 0;
@@ -272,7 +272,7 @@ public class MapParametersDialog extends PamDialog {
addComponent(this, colourByChannel, c);
c.gridy++;
c.gridwidth = 1;
- addComponent(this, new JLabel("Symbox size ", JLabel.RIGHT), c);
+ addComponent(this, new JLabel("Symbol size ", JLabel.RIGHT), c);
c.gridx++;
symbolSize = new SpinnerNumberModel(Hydrophone.DefaultSymbolSize, 4, 30, 2);
addComponent(this, symbolSizeSpinner = new JSpinner(symbolSize), c);
diff --git a/src/PamController/SettingsFileDialog.java b/src/PamController/SettingsFileDialog.java
index 8619b8f6..73fab149 100644
--- a/src/PamController/SettingsFileDialog.java
+++ b/src/PamController/SettingsFileDialog.java
@@ -63,6 +63,7 @@ public class SettingsFileDialog extends PamDialog {
pan.add(BorderLayout.CENTER, p);
pan.add(BorderLayout.SOUTH, q);
+ setMoveToMouse(false);
setDialogComponent(pan);
}
diff --git a/src/PamView/PamObjectViewer.java b/src/PamView/PamObjectViewer.java
index 8a2c36be..2801162b 100644
--- a/src/PamView/PamObjectViewer.java
+++ b/src/PamView/PamObjectViewer.java
@@ -37,6 +37,7 @@ import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
+import javax.swing.SwingUtilities;
import javax.swing.Timer;
import javax.swing.WindowConstants;
@@ -882,6 +883,7 @@ public class PamObjectViewer implements PamViewInterface, ComponentListener,
blockTimer.start();
setVisible(true);
+
}
@@ -1005,6 +1007,22 @@ public class PamObjectViewer implements PamViewInterface, ComponentListener,
return null;
}
+ @Override
+ public void setVisible(boolean vis) {
+ if (vis) {
+ SwingUtilities.invokeLater(new Runnable() {
+ /**
+ * This seems to work and resize the text fields on high def displays.
+ */
+ @Override
+ public void run() {
+ pack();
+ }
+ });
+ }
+ super.setVisible(vis);
+ }
+
void fillPanelContent() {
p.removeAll();
GridBagLayout layout = new GridBagLayout();
diff --git a/src/PamView/dialog/PamDialog.java b/src/PamView/dialog/PamDialog.java
index e3c94234..64e7b5f1 100644
--- a/src/PamView/dialog/PamDialog.java
+++ b/src/PamView/dialog/PamDialog.java
@@ -64,6 +64,10 @@ abstract public class PamDialog extends JDialog {
private boolean warnDefaultSetting = true;
private CancelObserver cancelObserver;
private boolean firstShowing = true;
+/*
+ * Move to mouse position is parent is null
+ */
+ private boolean moveToMouse = true;
public JPanel getButtonPanel() {
return buttonPanel;
@@ -281,7 +285,7 @@ abstract public class PamDialog extends JDialog {
synchronized (this) {
PamColors.getInstance().notifyContianer(this.getContentPane());
}
- if (getOwner() == null) {
+ if (getOwner() == null && isMoveToMouse()) {
moveToMouseLocation();
}
if (firstShowing) {
@@ -691,4 +695,18 @@ abstract public class PamDialog extends JDialog {
}
}
+ /**
+ * @return the moveToMouse
+ */
+ public boolean isMoveToMouse() {
+ return moveToMouse;
+ }
+
+ /**
+ * @param moveToMouse the moveToMouse to set
+ */
+ public void setMoveToMouse(boolean moveToMouse) {
+ this.moveToMouse = moveToMouse;
+ }
+
}
diff --git a/src/generalDatabase/DBSchemaWriter.java b/src/generalDatabase/DBSchemaWriter.java
index 746516b4..f602ad5c 100644
--- a/src/generalDatabase/DBSchemaWriter.java
+++ b/src/generalDatabase/DBSchemaWriter.java
@@ -6,8 +6,6 @@ import java.sql.Types;
import java.util.ArrayList;
import java.util.List;
-import javax.xml.parsers.DocumentBuilderFactory;
-
import org.w3c.dom.Document;
import org.w3c.dom.Element;
From 6f6f7407ca42f6c46b11c3f0c7b2f85a2297b500 Mon Sep 17 00:00:00 2001
From: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date: Fri, 18 Nov 2022 09:55:17 +0000
Subject: [PATCH 2/3] Ishmael bugs
couple of places where PamDatablock.getLastUnit() was being used without
synchronization and the unit was being deleted between the line checking
there was a unit there and a line attempting to use the unit. Now
correctly synched so will get a unit you can use, or null.
---
src/IshmaelDetector/EnergySumProcess.java | 5 +++--
src/IshmaelDetector/SgramCorrProcess.java | 11 ++++++++---
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/src/IshmaelDetector/EnergySumProcess.java b/src/IshmaelDetector/EnergySumProcess.java
index 0aa1b990..bec3dfb7 100644
--- a/src/IshmaelDetector/EnergySumProcess.java
+++ b/src/IshmaelDetector/EnergySumProcess.java
@@ -79,8 +79,9 @@ public class EnergySumProcess extends IshDetFnProcess {
EnergySumParams p = (EnergySumParams)ishDetControl.ishDetParams;
PamDataBlock inputDataBlock = getInputDataBlock(); //might be null
- if (inputDataBlock != null && inputDataBlock.getUnitsCount() > 0) {
- savedGramHeight = ((FFTDataUnit)inputDataBlock.getLastUnit()).getFftData().length();
+ FFTDataUnit lastFFTUnit = ((FFTDataUnit)inputDataBlock.getLastUnit());
+ if (lastFFTUnit != null) {
+ savedGramHeight = lastFFTUnit.getFftData().length();
int len = savedGramHeight;
//Should be max(1,...) here, but FFT bin 0 has 0's in it.
loBin = Math.max(1, (int) Math.floor(len * p.f0 / (sampleRate/2)));
diff --git a/src/IshmaelDetector/SgramCorrProcess.java b/src/IshmaelDetector/SgramCorrProcess.java
index 0be85eea..fe7de69a 100644
--- a/src/IshmaelDetector/SgramCorrProcess.java
+++ b/src/IshmaelDetector/SgramCorrProcess.java
@@ -83,9 +83,14 @@ public class SgramCorrProcess extends IshDetFnProcess
protected void prepareMyParams() {
SgramCorrParams p = (SgramCorrParams)ishDetControl.ishDetParams;
PamDataBlock inputDataBlock = getInputDataBlock();
-
- if (inputDataBlock != null && inputDataBlock.getUnitsCount() > 0) {
- savedGramHeight = ((FFTDataUnit)inputDataBlock.getLastUnit()).getFftData().length();
+ /*
+ * get the unit. first, then check it's null. Due to multithreading it's
+ * possible that checking there are units and then asking for one,without
+ * synchronization will crash if the unit is deleted between those two calls.
+ */
+ FFTDataUnit lastFFTUnit = ((FFTDataUnit)inputDataBlock.getLastUnit());
+ if (lastFFTUnit != null) {
+ savedGramHeight = lastFFTUnit.getFftData().length();
/*
* fft information is now stored in an FFTDataBLock, so no need to get
* back to the process above it.
From 3203a0a50f181e01b8268c2d5c6a61e39110aa80 Mon Sep 17 00:00:00 2001
From: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date: Fri, 18 Nov 2022 10:52:50 +0000
Subject: [PATCH 3/3] Remove a few terminal outputs
Mostly with file analysis, to reduce junk on terminal
---
pom.xml | 2 +-
src/Acquisition/FileInputSystem.java | 10 +++++++++-
src/Acquisition/FolderInputSystem.java | 6 +++---
src/PamController/PamController.java | 5 +++--
src/PamController/PamguardVersionInfo.java | 2 +-
5 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/pom.xml b/pom.xml
index 4a00c145..035b5a41 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
org.pamguard
Pamguard
- 2.02.06
+ 2.02.06a
Pamguard Java12+
Pamguard for Java 12+, using Maven to control dependcies
www.pamguard.org
diff --git a/src/Acquisition/FileInputSystem.java b/src/Acquisition/FileInputSystem.java
index 31af5a84..1b15482f 100644
--- a/src/Acquisition/FileInputSystem.java
+++ b/src/Acquisition/FileInputSystem.java
@@ -167,6 +167,8 @@ public class FileInputSystem extends DaqSystem implements ActionListener, PamSe
private SudListener sudListener;
+ private boolean fullyStopped;
+
public FileInputSystem(AcquisitionControl acquisitionControl) {
this.acquisitionControl = acquisitionControl;
PamSettingManager.getInstance().registerSettings(this);
@@ -738,6 +740,8 @@ public class FileInputSystem extends DaqSystem implements ActionListener, PamSe
if (audioStream == null) return false;
dontStop = true;
+
+ fullyStopped = false;
theThread.start();
@@ -780,6 +784,9 @@ public class FileInputSystem extends DaqSystem implements ActionListener, PamSe
}
public void systemHasStopped(boolean wasRunning) {
+ if (fullyStopped) {
+ return;
+ }
long stopTime = System.currentTimeMillis();
if (getCurrentFile() == null) {
return;
@@ -788,6 +795,7 @@ public class FileInputSystem extends DaqSystem implements ActionListener, PamSe
double analSecs = (stopTime - fileStartTime) / 1000.;
System.out.println(String.format("File %s, SR=%dHz, length=%3.1fs took %3.1fs = %3.1fx real time",
getCurrentFile().getName(), (int)getSampleRate(), fileSecs, analSecs, fileSecs / analSecs));
+ fullyStopped = true;
}
/**
@@ -933,7 +941,7 @@ public class FileInputSystem extends DaqSystem implements ActionListener, PamSe
* PamDataUnits from them. Once a unit is created, tell this thread
* to wait until it has been used by the main thread.
*/
- System.out.println("File system start processing");
+// System.out.println("File system start processing");
/*
* File should have been opened in the constructor so just read it
* in in chunks and pass to datablock
diff --git a/src/Acquisition/FolderInputSystem.java b/src/Acquisition/FolderInputSystem.java
index 589b6c45..92ee94d7 100644
--- a/src/Acquisition/FolderInputSystem.java
+++ b/src/Acquisition/FolderInputSystem.java
@@ -150,7 +150,7 @@ public class FolderInputSystem extends FileInputSystem implements PamSettings{
public void actionPerformed(ActionEvent e) {
- System.out.println("Restart later time action");
+// System.out.println("Restart later time action");
newFileTimer.stop();
PamController.getInstance().startLater(false); //don't save settings on restarts
@@ -655,7 +655,7 @@ public class FolderInputSystem extends FileInputSystem implements PamSettings{
if (currentFile < allFiles.size()) {
// only restart if the file ended - not if it stopped
if (getStreamStatus() == STREAM_ENDED) {
- System.out.println(String.format("Start new file timer (file %d/%d)",currentFile+1,allFiles.size()));
+// System.out.println(String.format("Start new file timer (file %d/%d)",currentFile+1,allFiles.size()));
newFileTimer.start();
}
}
@@ -778,7 +778,7 @@ public class FolderInputSystem extends FileInputSystem implements PamSettings{
@Override
public boolean startSystem(AcquisitionControl daqControl) {
- System.out.println("Start system");
+// System.out.println("Start system");
setFolderProgress();
return super.startSystem(daqControl);
}
diff --git a/src/PamController/PamController.java b/src/PamController/PamController.java
index af85a10d..f731b064 100644
--- a/src/PamController/PamController.java
+++ b/src/PamController/PamController.java
@@ -1225,8 +1225,9 @@ public class PamController implements PamControllerInterface, PamSettings {
if (PamCalendar.isSoundFile() == false) {
PamCalendar.setSessionStartTime(PamCalendar.getTimeInMillis());
}
-
- System.out.printf("PAMGUARD Startup took %d milliseconds at time %s\n", startDelay, PamCalendar.formatDateTime(PamCalendar.getSessionStartTime()));
+ if (PamCalendar.isSoundFile() == false) {
+ System.out.printf("PAMGUARD Startup took %d milliseconds at time %s\n", startDelay, PamCalendar.formatDateTime(PamCalendar.getSessionStartTime()));
+ }
guiFrameManager.pamStarted();
return true;
diff --git a/src/PamController/PamguardVersionInfo.java b/src/PamController/PamguardVersionInfo.java
index 68b68f42..47692579 100644
--- a/src/PamController/PamguardVersionInfo.java
+++ b/src/PamController/PamguardVersionInfo.java
@@ -31,7 +31,7 @@ public class PamguardVersionInfo {
* Version number, major version.minorversion.sub-release.
* Note: can't go higher than sub-release 'f'
*/
- static public final String version = "2.02.06";
+ static public final String version = "2.02.06a";
/**
* Release date