Merge pull request #35 from PAMGuard/main

Last fixes just after release 2.02.06
This commit is contained in:
Douglas Gillespie 2022-11-20 21:04:48 +00:00 committed by GitHub
commit 358770b485
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 69 additions and 19 deletions

View File

@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.pamguard</groupId>
<artifactId>Pamguard</artifactId>
<version>2.02.06</version>
<version>2.02.06a</version>
<name>Pamguard Java12+</name>
<description>Pamguard for Java 12+, using Maven to control dependcies</description>
<url>www.pamguard.org</url>

View File

@ -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

View File

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

View File

@ -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)));

View File

@ -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.

View File

@ -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);

View File

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

View File

@ -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

View File

@ -63,6 +63,7 @@ public class SettingsFileDialog extends PamDialog {
pan.add(BorderLayout.CENTER, p);
pan.add(BorderLayout.SOUTH, q);
setMoveToMouse(false);
setDialogComponent(pan);
}

View File

@ -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();

View File

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

View File

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