mirror of
https://github.com/PAMGuard/PAMGuard.git
synced 2024-11-25 16:42:27 +00:00
Merge with main (#116)
* Stop command small change so command is available as a constant * Lots of small updates to enable opening of a secondary configuration for batch processing control.
This commit is contained in:
parent
840e6c89a1
commit
b12ccf9c67
@ -388,7 +388,7 @@ public class AcquisitionControl extends RawInputControlledUnit implements PamSet
|
|||||||
message += "\n\nFailure to do so may result in PAMGUARD crashing or features not working correctly";
|
message += "\n\nFailure to do so may result in PAMGUARD crashing or features not working correctly";
|
||||||
int ans = JOptionPane.showConfirmDialog(parentFrame, message, getArrayErrorMessage(error), JOptionPane.YES_NO_OPTION);
|
int ans = JOptionPane.showConfirmDialog(parentFrame, message, getArrayErrorMessage(error), JOptionPane.YES_NO_OPTION);
|
||||||
if (ans == JOptionPane.YES_OPTION) {
|
if (ans == JOptionPane.YES_OPTION) {
|
||||||
ArrayManager.getArrayManager().showArrayDialog(getPamView().getGuiFrame());
|
ArrayManager.getArrayManager().showArrayDialog(getGuiFrame());
|
||||||
return checkArrayChannels(parentFrame);
|
return checkArrayChannels(parentFrame);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@ public class IMUControl extends PamControlledUnit implements PamSettings {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
IMUSettingsDialog.showDialog(getPamView().getGuiFrame(),THIS);
|
IMUSettingsDialog.showDialog(getGuiFrame(),THIS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,7 +89,7 @@ public class IMUControl extends PamControlledUnit implements PamSettings {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
IMUParams newIMUParams=IMUImportDialog.showDialog(getPamView().getGuiFrame(),THIS, importCSV);
|
IMUParams newIMUParams=IMUImportDialog.showDialog(getGuiFrame(),THIS, importCSV);
|
||||||
//if params are not null try and load data
|
//if params are not null try and load data
|
||||||
if (newIMUParams!=null){
|
if (newIMUParams!=null){
|
||||||
imuParams=newIMUParams;
|
imuParams=newIMUParams;
|
||||||
@ -115,7 +115,7 @@ public class IMUControl extends PamControlledUnit implements PamSettings {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
IMUParams newIMUParams=IMUCalibrationDialog.showDialog(getPamView().getGuiFrame(),imuParams);
|
IMUParams newIMUParams=IMUCalibrationDialog.showDialog(getGuiFrame(),imuParams);
|
||||||
if (newIMUParams!=null) imuParams=newIMUParams;
|
if (newIMUParams!=null) imuParams=newIMUParams;
|
||||||
updateProcesses(CAL_VALUES_CHANGED);
|
updateProcesses(CAL_VALUES_CHANGED);
|
||||||
}
|
}
|
||||||
|
@ -91,7 +91,7 @@ public class IMUImportDialog extends PamDialog{
|
|||||||
}
|
}
|
||||||
else dir=null;
|
else dir=null;
|
||||||
|
|
||||||
String newFile=PamFileBrowser.csvFileBrowser(imuControl.getPamView().getGuiFrame(),dir,PamFileBrowser.OPEN_FILE);
|
String newFile=PamFileBrowser.csvFileBrowser(imuControl.getGuiFrame(),dir,PamFileBrowser.OPEN_FILE);
|
||||||
|
|
||||||
addNewFileToList( newFile);
|
addNewFileToList( newFile);
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@ package Map;
|
|||||||
import java.awt.BasicStroke;
|
import java.awt.BasicStroke;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Cursor;
|
import java.awt.Cursor;
|
||||||
|
import java.awt.Frame;
|
||||||
import java.awt.Graphics;
|
import java.awt.Graphics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.MouseInfo;
|
import java.awt.MouseInfo;
|
||||||
@ -1636,9 +1637,9 @@ public class MapPanel extends JPanelWithPamKey implements PamObserver, ColorMana
|
|||||||
class OverlayOptions implements ActionListener {
|
class OverlayOptions implements ActionListener {
|
||||||
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
JFrame frame = (JFrame) PamController.getMainFrame();
|
Frame frame = (JFrame) PamController.getMainFrame();
|
||||||
if (mapController.getPamView() != null) {
|
if (mapController.getPamView() != null) {
|
||||||
frame = mapController.getPamView().getGuiFrame();
|
frame = mapController.getGuiFrame();
|
||||||
}
|
}
|
||||||
|
|
||||||
MapDetectionsParameters newParams = MapDetectionsDialog.showDialog(frame,
|
MapDetectionsParameters newParams = MapDetectionsDialog.showDialog(frame,
|
||||||
|
549
src/PamController/PamConfiguration.java
Normal file
549
src/PamController/PamConfiguration.java
Normal file
@ -0,0 +1,549 @@
|
|||||||
|
package PamController;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import Array.ArrayManager;
|
||||||
|
import PamController.settings.output.xml.PamguardXMLWriter;
|
||||||
|
import PamDetection.PamDetection;
|
||||||
|
import PamDetection.RawDataUnit;
|
||||||
|
import PamView.GeneralProjector;
|
||||||
|
import PamView.PanelOverlayDraw;
|
||||||
|
import PamguardMVC.PamDataBlock;
|
||||||
|
import PamguardMVC.PamDataUnit;
|
||||||
|
import PamguardMVC.PamProcess;
|
||||||
|
import PamguardMVC.PamRawDataBlock;
|
||||||
|
import binaryFileStorage.BinaryStore;
|
||||||
|
import fftManager.FFTDataBlock;
|
||||||
|
import fftManager.FFTDataUnit;
|
||||||
|
import offlineProcessing.OfflineTask;
|
||||||
|
import offlineProcessing.OfflineTaskGroup;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class to take all of the configuration information out of PamController. This
|
||||||
|
* is because PamController is a singleton class, so there can only every be one of
|
||||||
|
* them, but for some of the batch processing control, we need to be able to load and
|
||||||
|
* manipulate a second set of modules, which do nothing within the running
|
||||||
|
* configuration, but are there to allow us to set up a configuration to send to
|
||||||
|
* other batch processes in viewer mode.
|
||||||
|
* @author dg50
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class PamConfiguration {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List of the current controlled units (PAMGuard modules)
|
||||||
|
*/
|
||||||
|
private ArrayList<PamControlledUnit> pamControlledUnits;
|
||||||
|
|
||||||
|
public PamConfiguration() {
|
||||||
|
super();
|
||||||
|
|
||||||
|
// create the array list to hold multiple views
|
||||||
|
pamControlledUnits = new ArrayList<PamControlledUnit>();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Call setupControlledUnit() on all modules.
|
||||||
|
*/
|
||||||
|
public void setupProcesses() {
|
||||||
|
for (int i = 0; i < pamControlledUnits.size(); i++) {
|
||||||
|
pamControlledUnits.get(i).setupControlledUnit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Can PAMGUARD shut down. This question is asked in turn to
|
||||||
|
* every module. Each module should attempt to make sure it can
|
||||||
|
* answer true, e.g. by closing files, but if any module
|
||||||
|
* returns false, then canClose() will return false;
|
||||||
|
* @return whether it's possible to close PAMGUARD
|
||||||
|
* without corrupting or losing data.
|
||||||
|
*/
|
||||||
|
public boolean canClose() {
|
||||||
|
for (int i = 0; i < pamControlledUnits.size(); i++) {
|
||||||
|
if (pamControlledUnits.get(i).canClose() == false) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called after canClose has returned true to finally tell
|
||||||
|
* all modules that PAMGUARD is definitely closing down.so they
|
||||||
|
* can free any resources, etc.
|
||||||
|
*/
|
||||||
|
public void pamClose() {
|
||||||
|
|
||||||
|
|
||||||
|
for (int i = 0; i < pamControlledUnits.size(); i++) {
|
||||||
|
pamControlledUnits.get(i).pamClose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the pamControlledUnits
|
||||||
|
*/
|
||||||
|
public ArrayList<PamControlledUnit> getPamControlledUnits() {
|
||||||
|
return pamControlledUnits;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a PamControlledUnit to the main list.
|
||||||
|
* @param controlledUnit
|
||||||
|
*/
|
||||||
|
public void addControlledUnit(PamControlledUnit controlledUnit) {
|
||||||
|
pamControlledUnits.add(controlledUnit);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean removeControlledUnt(PamControlledUnit controlledUnit) {
|
||||||
|
|
||||||
|
boolean removed = false;
|
||||||
|
while (pamControlledUnits.contains(controlledUnit)) {
|
||||||
|
pamControlledUnits.remove(controlledUnit);
|
||||||
|
removed = true;
|
||||||
|
}
|
||||||
|
return removed;
|
||||||
|
// getMainFrame().revalidate(); //handled inside the GUIFrameManager by notify model changed. The controller should have
|
||||||
|
//as few direct GUI calls as possible.
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* re-order the modules according to the given list.
|
||||||
|
* @param newOrder
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public boolean reOrderModules(int[] newOrder) {
|
||||||
|
|
||||||
|
if (pamControlledUnits.size() != newOrder.length) return false;
|
||||||
|
|
||||||
|
ArrayList<PamControlledUnit> newList = new ArrayList<PamControlledUnit>();
|
||||||
|
|
||||||
|
for (int i = 0; i < newOrder.length; i++) {
|
||||||
|
|
||||||
|
newList.add(pamControlledUnits.get(newOrder[i]));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
pamControlledUnits = newList;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PamControlledUnit getControlledUnit(int iUnit) {
|
||||||
|
if (iUnit < getNumControlledUnits()) {
|
||||||
|
return pamControlledUnits.get(iUnit);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PamControlledUnit findControlledUnit(String unitType) {
|
||||||
|
for (int i = 0; i < getNumControlledUnits(); i++) {
|
||||||
|
if (pamControlledUnits.get(i).getUnitType().equalsIgnoreCase(unitType)) {
|
||||||
|
return pamControlledUnits.get(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getNumControlledUnits() {
|
||||||
|
return pamControlledUnits.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
public PamRawDataBlock getRawDataBlock(int id) {
|
||||||
|
return (PamRawDataBlock) getDataBlock(RawDataUnit.class, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PamRawDataBlock getRawDataBlock(String name) {
|
||||||
|
return (PamRawDataBlock) getDataBlock(RawDataUnit.class, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find a block of a given type with the given name, or null if it
|
||||||
|
* doesn't exist.
|
||||||
|
* @param blockType -- RAW, FFT, DETECTOR, null, etc.
|
||||||
|
* @param name -- the block name
|
||||||
|
* @return block, which you may want to cast to a subtype
|
||||||
|
*/
|
||||||
|
public PamDataBlock getDataBlock(Class blockType, String name) {
|
||||||
|
if (name == null) return null;
|
||||||
|
ArrayList<PamDataBlock> blocks = getDataBlocks(blockType, true);
|
||||||
|
for (PamDataBlock dataBlock:blocks) {
|
||||||
|
if (name.equals(dataBlock.getLongDataName())) { // check for a long name match first
|
||||||
|
return dataBlock;
|
||||||
|
}
|
||||||
|
if (dataBlock instanceof FFTDataBlock) {
|
||||||
|
FFTDataBlock fb = (FFTDataBlock) dataBlock;
|
||||||
|
if (name.equals(fb.getOldLongDataName())) {
|
||||||
|
return dataBlock;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (name.equals(dataBlock.toString())) {
|
||||||
|
return dataBlock;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<PamDataBlock> getDataBlocks(Class blockType, boolean includeSubClasses) {
|
||||||
|
return makeDataBlockList(blockType, includeSubClasses);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<PamDataBlock> getDetectorDataBlocks() {
|
||||||
|
return makeDataBlockList(PamDetection.class, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<PamDataBlock> getFFTDataBlocks() {
|
||||||
|
return makeDataBlockList(FFTDataUnit.class, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PamDataBlock getFFTDataBlock(int id) {
|
||||||
|
return getDataBlock(FFTDataUnit.class, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PamDataBlock getFFTDataBlock(String name) {
|
||||||
|
return getDataBlock(FFTDataUnit.class, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find a block of a given type with the id number, or null if the number
|
||||||
|
* is out of range.
|
||||||
|
*
|
||||||
|
* @param blockType
|
||||||
|
* @param id -- the block id number
|
||||||
|
* @return block, which you may want to cast to a subtype
|
||||||
|
*/
|
||||||
|
public PamDataBlock getDataBlock(Class blockType, int id) {
|
||||||
|
|
||||||
|
ArrayList<PamDataBlock> blocks = getDataBlocks(blockType, true);
|
||||||
|
if (id >= 0 && id < blocks.size()) return blocks.get(id);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
public ArrayList<PamDataBlock> getRawDataBlocks() {
|
||||||
|
return makeDataBlockList(RawDataUnit.class, true);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Find a block with the given long name, or null if it doesn't exist.
|
||||||
|
* @param longName the long name of the PamDataBlock
|
||||||
|
* @return block
|
||||||
|
*/
|
||||||
|
public PamDataBlock getDataBlockByLongName(String longName) {
|
||||||
|
if (longName == null) return null;
|
||||||
|
ArrayList<PamDataBlock> allBlocks = getDataBlocks();
|
||||||
|
for (PamDataBlock dataBlock:allBlocks) {
|
||||||
|
if (longName.equals(dataBlock.getLongDataName())) {
|
||||||
|
return dataBlock;
|
||||||
|
}
|
||||||
|
if (dataBlock instanceof FFTDataBlock) {
|
||||||
|
FFTDataBlock fb = (FFTDataBlock) dataBlock;
|
||||||
|
if (longName.equals(fb.getOldLongDataName())) {
|
||||||
|
return dataBlock;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<PamDataBlock> getDataBlocks() {
|
||||||
|
return makeDataBlockList(PamDataUnit.class, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a list of PamControlledUnit units of a given type
|
||||||
|
* @param unitType Controlled unit type
|
||||||
|
* @return list of units.
|
||||||
|
*/
|
||||||
|
public ArrayList<PamControlledUnit> findControlledUnits(String unitType) {
|
||||||
|
ArrayList<PamControlledUnit> l = new ArrayList<PamControlledUnit>();
|
||||||
|
int n = getNumControlledUnits();
|
||||||
|
PamControlledUnit pcu;
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
pcu = getControlledUnit(i);
|
||||||
|
if (pcu.getUnitType().equals(unitType)) {
|
||||||
|
l.add(pcu);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return l;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a list of PamControlledUnit units of a given type and name, allowing for nulls.
|
||||||
|
* @param unitType Controlled unit type, can be null for all units of name
|
||||||
|
* @param unitName Controlled unit name, can be null for all units of type
|
||||||
|
* @return list of units.
|
||||||
|
*/
|
||||||
|
public ArrayList<PamControlledUnit> findControlledUnits(String unitType, String unitName) {
|
||||||
|
ArrayList<PamControlledUnit> l = new ArrayList<PamControlledUnit>();
|
||||||
|
int n = getNumControlledUnits();
|
||||||
|
PamControlledUnit pcu;
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
pcu = getControlledUnit(i);
|
||||||
|
if (unitType != null && !unitType.equals(pcu.getUnitType())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (unitName != null && !unitName.equals(pcu.getUnitName())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
l.add(pcu);
|
||||||
|
}
|
||||||
|
|
||||||
|
return l;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* find the first controlled unit with the given type and name.
|
||||||
|
* @param unitType
|
||||||
|
* @param unitName
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public PamControlledUnit findControlledUnit(String unitType, String unitName) {
|
||||||
|
for (int i = 0; i < getNumControlledUnits(); i++) {
|
||||||
|
if (pamControlledUnits.get(i).getUnitType().equalsIgnoreCase(unitType) &&
|
||||||
|
pamControlledUnits.get(i).getUnitName().equalsIgnoreCase(unitName)) {
|
||||||
|
return pamControlledUnits.get(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find the first instance of a module with a given class type and name.
|
||||||
|
* <p>Name can be null in which case the first module with the correct class
|
||||||
|
* will be returned
|
||||||
|
* @param unitClass Module class (sub class of PamControlledUnit)
|
||||||
|
* @param unitName Module Name
|
||||||
|
* @return Existing module with that class and name.
|
||||||
|
*/
|
||||||
|
public PamControlledUnit findControlledUnit(Class unitClass, String unitName) {
|
||||||
|
for (int i = 0; i < getNumControlledUnits(); i++) {
|
||||||
|
if (pamControlledUnits.get(i).getClass() == unitClass && (unitName == null ||
|
||||||
|
pamControlledUnits.get(i).getUnitName().equalsIgnoreCase(unitName))) {
|
||||||
|
return pamControlledUnits.get(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get an Array list of PamControlledUnits of a particular class (exact matches only).
|
||||||
|
* @param unitClass PamControlledUnit class
|
||||||
|
* @return List of current instances of this class.
|
||||||
|
*/
|
||||||
|
public ArrayList<PamControlledUnit> findControlledUnits(Class unitClass) {
|
||||||
|
ArrayList<PamControlledUnit> foundUnits = new ArrayList<>();
|
||||||
|
for (int i = 0; i < getNumControlledUnits(); i++) {
|
||||||
|
if (pamControlledUnits.get(i).getClass() == unitClass) {
|
||||||
|
foundUnits.add(pamControlledUnits.get(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return foundUnits;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get an Array list of PamControlledUnits of a particular class (exact matches only).
|
||||||
|
* @param unitClass PamControlledUnit class
|
||||||
|
* @return List of current instances of this class.
|
||||||
|
*/
|
||||||
|
public ArrayList<PamControlledUnit> findControlledUnits(Class unitClass, boolean includeSubClasses) {
|
||||||
|
if (includeSubClasses == false) {
|
||||||
|
return findControlledUnits(unitClass);
|
||||||
|
}
|
||||||
|
ArrayList<PamControlledUnit> foundUnits = new ArrayList<>();
|
||||||
|
for (int i = 0; i < getNumControlledUnits(); i++) {
|
||||||
|
if (unitClass.isAssignableFrom(pamControlledUnits.get(i).getClass())) {
|
||||||
|
foundUnits.add(pamControlledUnits.get(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return foundUnits;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Check whether a controlled unit exists based on it's name.
|
||||||
|
* @param the controlled unit name e.g. "my crazy click detector", not the default name.
|
||||||
|
*/
|
||||||
|
public boolean isControlledUnit(String controlName) {
|
||||||
|
for (int i = 0; i < getNumControlledUnits(); i++) {
|
||||||
|
if (pamControlledUnits.get(i).getUnitName().equalsIgnoreCase(controlName)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets called in pamStart and may / will attempt to store all
|
||||||
|
* PAMGUARD settings via the database and binary storage modules.
|
||||||
|
*/
|
||||||
|
public void saveSettings(long timeNow) {
|
||||||
|
PamControlledUnit pcu;
|
||||||
|
PamSettingsSource settingsSource;
|
||||||
|
for (int iU = 0; iU < pamControlledUnits.size(); iU++) {
|
||||||
|
pcu = pamControlledUnits.get(iU);
|
||||||
|
if (PamSettingsSource.class.isAssignableFrom(pcu.getClass())) {
|
||||||
|
settingsSource = (PamSettingsSource) pcu;
|
||||||
|
settingsSource.saveStartSettings(timeNow);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
PamguardXMLWriter.getXMLWriter().writeStartSettings(timeNow);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return a list of PamControlledUnits which implements the
|
||||||
|
* PamSettingsSource interface
|
||||||
|
* @see PamSettingsSource
|
||||||
|
*/
|
||||||
|
public ArrayList<PamSettingsSource> findSettingsSources() {
|
||||||
|
ArrayList<PamSettingsSource> settingsSources = new ArrayList<PamSettingsSource>();
|
||||||
|
PamControlledUnit pcu;
|
||||||
|
for (int iU = 0; iU < pamControlledUnits.size(); iU++) {
|
||||||
|
pcu = pamControlledUnits.get(iU);
|
||||||
|
if (PamSettingsSource.class.isAssignableFrom(pcu.getClass())) {
|
||||||
|
settingsSources.add((PamSettingsSource) pcu);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return settingsSources;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<PamDataBlock> getPlottableDataBlocks(GeneralProjector generalProjector) {
|
||||||
|
|
||||||
|
ArrayList<PamDataBlock> blockList = new ArrayList<PamDataBlock>();
|
||||||
|
PamProcess pP;
|
||||||
|
Class unitClass;
|
||||||
|
PanelOverlayDraw panelOverlayDraw;
|
||||||
|
|
||||||
|
for (int iU = 0; iU < pamControlledUnits.size(); iU++) {
|
||||||
|
for (int iP = 0; iP < pamControlledUnits.get(iU)
|
||||||
|
.getNumPamProcesses(); iP++) {
|
||||||
|
pP = pamControlledUnits.get(iU).getPamProcess(iP);
|
||||||
|
for (int j = 0; j < pP.getNumOutputDataBlocks(); j++) {
|
||||||
|
if(pP.getOutputDataBlock(j).canDraw(generalProjector)) {
|
||||||
|
blockList.add(pP.getOutputDataBlock(j));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return blockList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<PamDataBlock> makeDataBlockList(Class classType, boolean includSubClasses) {
|
||||||
|
|
||||||
|
ArrayList<PamDataBlock> blockList = new ArrayList<PamDataBlock>();
|
||||||
|
PamProcess pP;
|
||||||
|
Class unitClass;
|
||||||
|
|
||||||
|
for (int iU = 0; iU < pamControlledUnits.size(); iU++) {
|
||||||
|
for (int iP = 0; iP < pamControlledUnits.get(iU)
|
||||||
|
.getNumPamProcesses(); iP++) {
|
||||||
|
pP = pamControlledUnits.get(iU).getPamProcess(iP);
|
||||||
|
for (int j = 0; j < pP.getNumOutputDataBlocks(); j++) {
|
||||||
|
//System.out.println("Comparing "+pP.getOutputDataBlock(j).getUnitClass().getCanonicalName()+" to "+classType.getCanonicalName());
|
||||||
|
if ((unitClass = pP.getOutputDataBlock(j).getUnitClass()) == classType) {
|
||||||
|
blockList.add(pP.getOutputDataBlock(j));
|
||||||
|
}
|
||||||
|
else if (includSubClasses) {
|
||||||
|
if (classType != null && classType.isAssignableFrom(unitClass)) {
|
||||||
|
blockList.add(pP.getOutputDataBlock(j));
|
||||||
|
}
|
||||||
|
// while ((unitClass = unitClass.getSuperclass()) != null) {
|
||||||
|
// if (unitClass == classType) {
|
||||||
|
// blockList.add(pP.getOutputDataBlock(j));
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return blockList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void notifyModelChanged(int changeType) {
|
||||||
|
// also tell all PamControlledUnits since they may want to find their data source
|
||||||
|
// it that was created after they were - i.e. dependencies have got all muddled
|
||||||
|
for (int i = 0; i < pamControlledUnits.size(); i++) {
|
||||||
|
pamControlledUnits.get(i).notifyModelChanged(changeType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Serializable getSettingsReference() {
|
||||||
|
ArrayList<UsedModuleInfo> usedModules = new ArrayList<UsedModuleInfo>();
|
||||||
|
for (int i = 0; i < pamControlledUnits.size(); i++) {
|
||||||
|
usedModules.add(new UsedModuleInfo(pamControlledUnits.get(i).getClass().getName(),
|
||||||
|
pamControlledUnits.get(i).getUnitType(),
|
||||||
|
pamControlledUnits.get(i).getUnitName()));
|
||||||
|
}
|
||||||
|
return usedModules;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void destroyModel() {
|
||||||
|
|
||||||
|
for (int i = 0; i < pamControlledUnits.size(); i++) {
|
||||||
|
pamControlledUnits.get(i).notifyModelChanged(PamController.DESTROY_EVERYTHING);
|
||||||
|
}
|
||||||
|
pamControlledUnits.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the index of a PamControlledUnit
|
||||||
|
* @param unit
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public int getControlledUnitIndex(PamControlledUnit unit) {
|
||||||
|
return pamControlledUnits.indexOf(unit);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find the path to the binary store ....
|
||||||
|
* @return path to the binary store.
|
||||||
|
*/
|
||||||
|
public String findBinaryStorePath() {
|
||||||
|
BinaryStore binaryStore = (BinaryStore) findControlledUnit(BinaryStore.getBinaryUnitType());
|
||||||
|
if (binaryStore == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
String storeLoc = binaryStore.getBinaryStoreSettings().getStoreLocation();
|
||||||
|
if (storeLoc == null) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
if (storeLoc.endsWith(File.separator) == false) {
|
||||||
|
storeLoc += File.separator;
|
||||||
|
}
|
||||||
|
return storeLoc;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a list of all offline task groups in this configuration
|
||||||
|
* @return task group list
|
||||||
|
*/
|
||||||
|
public ArrayList<OfflineTaskGroup> getAllOfflineTaskGroups() {
|
||||||
|
ArrayList<OfflineTaskGroup> tgs = new ArrayList<OfflineTaskGroup>();
|
||||||
|
for (PamControlledUnit unit : pamControlledUnits){
|
||||||
|
int numGroups = unit.getNumOfflineTaskGroups();
|
||||||
|
for (int iGp=0;iGp<numGroups;iGp++){
|
||||||
|
tgs.add( unit.getOfflineTaskGroup(iGp));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return tgs;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a list of all offline tasks in the configuration
|
||||||
|
* @return offline task list
|
||||||
|
*/
|
||||||
|
public ArrayList<OfflineTask> getAllOfflineTasks() {
|
||||||
|
ArrayList<OfflineTask> ots = new ArrayList<OfflineTask>();
|
||||||
|
ArrayList<OfflineTaskGroup> groups = getAllOfflineTaskGroups();
|
||||||
|
for (OfflineTaskGroup group : groups) {
|
||||||
|
int nTasks = group.getNTasks();
|
||||||
|
for (int i = 0; i < nTasks; i++) {
|
||||||
|
ots.add(group.getTask(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ots;
|
||||||
|
}
|
||||||
|
}
|
@ -141,6 +141,8 @@ public abstract class PamControlledUnit implements SettingsNameProvider {
|
|||||||
|
|
||||||
private ModuleStatusManager moduleStatusManager;
|
private ModuleStatusManager moduleStatusManager;
|
||||||
|
|
||||||
|
private PamConfiguration pamConfiguration;
|
||||||
|
|
||||||
// private ArrayList<OfflineTask> offlineTasks = new ArrayList<>();
|
// private ArrayList<OfflineTask> offlineTasks = new ArrayList<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -155,8 +157,17 @@ public abstract class PamControlledUnit implements SettingsNameProvider {
|
|||||||
* name of unit
|
* name of unit
|
||||||
*/
|
*/
|
||||||
public PamControlledUnit(String unitType, String unitName) {
|
public PamControlledUnit(String unitType, String unitName) {
|
||||||
|
this(null, unitType, unitName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PamControlledUnit(PamConfiguration pamConfiguration, String unitType, String unitName) {
|
||||||
this.unitType = unitType;
|
this.unitType = unitType;
|
||||||
this.unitName = unitName;
|
this.unitName = unitName;
|
||||||
|
this.pamConfiguration = pamConfiguration;
|
||||||
|
if (this.pamConfiguration == null) {
|
||||||
|
this.pamConfiguration = PamController.getInstance().getPamConfiguration();
|
||||||
|
}
|
||||||
|
|
||||||
pamProcesses = new ArrayList<PamProcess>();
|
pamProcesses = new ArrayList<PamProcess>();
|
||||||
|
|
||||||
isViewer = PamController.getInstance().getRunMode() == PamController.RUN_PAMVIEW;
|
isViewer = PamController.getInstance().getRunMode() == PamController.RUN_PAMVIEW;
|
||||||
@ -497,6 +508,12 @@ public abstract class PamControlledUnit implements SettingsNameProvider {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the GUI associated with this module. However, this may return null, so if you want a frame
|
||||||
|
* to use for a dialog, better to use PamController.getGuiFrame() which handles null automatically.
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
public PamView getPamView() {
|
public PamView getPamView() {
|
||||||
return pamView;
|
return pamView;
|
||||||
}
|
}
|
||||||
@ -674,11 +691,11 @@ public abstract class PamControlledUnit implements SettingsNameProvider {
|
|||||||
* @param offlineTaskGroup
|
* @param offlineTaskGroup
|
||||||
*/
|
*/
|
||||||
public void addOfflineTaskGroup(OfflineTaskGroup offlineTaskGroup) {
|
public void addOfflineTaskGroup(OfflineTaskGroup offlineTaskGroup) {
|
||||||
if (isViewer){
|
// if (isViewer){
|
||||||
offlineTaskGroups.add(offlineTaskGroup);
|
offlineTaskGroups.add(offlineTaskGroup);
|
||||||
}else{
|
// }else{
|
||||||
System.out.println("OfflineTaskGroup cannot be added as is not viewer mode");
|
// System.out.println("OfflineTaskGroup cannot be added as is not viewer mode");
|
||||||
}
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -864,4 +881,34 @@ public abstract class PamControlledUnit implements SettingsNameProvider {
|
|||||||
return instanceIndex;
|
return instanceIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The PamConfiguration holds the master list of modules which form part of a
|
||||||
|
* configuration. It should be accessed to find list of datablocks, etc. rather than
|
||||||
|
* doing everything through PAMController whenever possible.
|
||||||
|
* @return the pamConfiguration
|
||||||
|
*/
|
||||||
|
public PamConfiguration getPamConfiguration() {
|
||||||
|
if (pamConfiguration == null) {
|
||||||
|
pamConfiguration = PamController.getInstance().getPamConfiguration();
|
||||||
|
}
|
||||||
|
return pamConfiguration;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is this module in the main configuration. If it isn't then it's probably a dummy config
|
||||||
|
* used in the batch processor or for importing / exporting configs, so it should be stopped from
|
||||||
|
* doing too much !
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public boolean isInMainConfiguration() {
|
||||||
|
return pamConfiguration == PamController.getInstance().getPamConfiguration();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param pamConfiguration the pamConfiguration to set
|
||||||
|
*/
|
||||||
|
public void setPamConfiguration(PamConfiguration pamConfiguration) {
|
||||||
|
this.pamConfiguration = pamConfiguration;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -34,6 +34,9 @@ import javax.swing.SwingUtilities;
|
|||||||
import javax.swing.Timer;
|
import javax.swing.Timer;
|
||||||
import javax.swing.ToolTipManager;
|
import javax.swing.ToolTipManager;
|
||||||
|
|
||||||
|
import com.jcraft.jsch.ConfigRepository.Config;
|
||||||
|
import com.sun.xml.bind.v2.TODO;
|
||||||
|
|
||||||
import Acquisition.AcquisitionProcess;
|
import Acquisition.AcquisitionProcess;
|
||||||
|
|
||||||
//import com.sun.org.apache.xerces.internal.dom.DocumentImpl;
|
//import com.sun.org.apache.xerces.internal.dom.DocumentImpl;
|
||||||
@ -67,7 +70,6 @@ import PamController.soundMedium.GlobalMediumManager;
|
|||||||
import PamDetection.PamDetection;
|
import PamDetection.PamDetection;
|
||||||
import PamDetection.RawDataUnit;
|
import PamDetection.RawDataUnit;
|
||||||
import PamModel.PamModel;
|
import PamModel.PamModel;
|
||||||
import PamModel.PamModelInterface;
|
|
||||||
import PamModel.PamModelSettings;
|
import PamModel.PamModelSettings;
|
||||||
import PamModel.PamModuleInfo;
|
import PamModel.PamModuleInfo;
|
||||||
import PamModel.SMRUEnable;
|
import PamModel.SMRUEnable;
|
||||||
@ -144,11 +146,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
*/
|
*/
|
||||||
private PamModel pamModelInterface;
|
private PamModel pamModelInterface;
|
||||||
|
|
||||||
/**
|
private PamConfiguration pamConfiguration;
|
||||||
* List of the current controlled units (PAMGuard modules)
|
|
||||||
*/
|
|
||||||
private ArrayList<PamControlledUnit> pamControlledUnits;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The current PAM status
|
* The current PAM status
|
||||||
*/
|
*/
|
||||||
@ -236,6 +234,8 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
|
|
||||||
uniqueController = this;
|
uniqueController = this;
|
||||||
|
|
||||||
|
pamConfiguration = new PamConfiguration();
|
||||||
|
|
||||||
this.runMode = runMode;
|
this.runMode = runMode;
|
||||||
|
|
||||||
if (runMode == PamController.RUN_PAMVIEW) {
|
if (runMode == PamController.RUN_PAMVIEW) {
|
||||||
@ -353,10 +353,6 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
*/
|
*/
|
||||||
public void setupPamguard() {
|
public void setupPamguard() {
|
||||||
|
|
||||||
|
|
||||||
// create the array list to hold multiple views
|
|
||||||
pamControlledUnits = new ArrayList<PamControlledUnit>();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set Locale to English so that formated writes to text fields
|
* Set Locale to English so that formated writes to text fields
|
||||||
* in dialogs use . and not , for the decimal.
|
* in dialogs use . and not , for the decimal.
|
||||||
@ -661,9 +657,10 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
void setupProcesses() {
|
void setupProcesses() {
|
||||||
for (int i = 0; i < pamControlledUnits.size(); i++) {
|
// for (int i = 0; i < pamControlledUnits.size(); i++) {
|
||||||
pamControlledUnits.get(i).setupControlledUnit();
|
// pamControlledUnits.get(i).setupControlledUnit();
|
||||||
}
|
// }
|
||||||
|
pamConfiguration.setupProcesses();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -675,12 +672,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
* without corrupting or losing data.
|
* without corrupting or losing data.
|
||||||
*/
|
*/
|
||||||
public boolean canClose() {
|
public boolean canClose() {
|
||||||
for (int i = 0; i < pamControlledUnits.size(); i++) {
|
return pamConfiguration.canClose();
|
||||||
if (pamControlledUnits.get(i).canClose() == false) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -694,9 +686,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
|
|
||||||
getUidManager().runShutDownOps();
|
getUidManager().runShutDownOps();
|
||||||
|
|
||||||
for (int i = 0; i < pamControlledUnits.size(); i++) {
|
pamConfiguration.pamClose();
|
||||||
pamControlledUnits.get(i).pamClose();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -716,6 +706,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
* it to be easy to override this for specific modules / processes / data blocks.
|
* it to be easy to override this for specific modules / processes / data blocks.
|
||||||
*/
|
*/
|
||||||
public void saveViewerData() {
|
public void saveViewerData() {
|
||||||
|
ArrayList<PamControlledUnit> pamControlledUnits = pamConfiguration.getPamControlledUnits();
|
||||||
for (int i = 0; i < pamControlledUnits.size(); i++) {
|
for (int i = 0; i < pamControlledUnits.size(); i++) {
|
||||||
pamControlledUnits.get(i).saveViewerData();
|
pamControlledUnits.get(i).saveViewerData();
|
||||||
}
|
}
|
||||||
@ -728,7 +719,8 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addControlledUnit(PamControlledUnit controlledUnit) {
|
public void addControlledUnit(PamControlledUnit controlledUnit) {
|
||||||
pamControlledUnits.add(controlledUnit);
|
|
||||||
|
pamConfiguration.addControlledUnit(controlledUnit);
|
||||||
|
|
||||||
guiFrameManager.addControlledUnit(controlledUnit);
|
guiFrameManager.addControlledUnit(controlledUnit);
|
||||||
|
|
||||||
@ -854,8 +846,8 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
|
|
||||||
guiFrameManager.removeControlledUnit(controlledUnit);
|
guiFrameManager.removeControlledUnit(controlledUnit);
|
||||||
|
|
||||||
while (pamControlledUnits.contains(controlledUnit)) {
|
boolean removed = pamConfiguration.removeControlledUnt(controlledUnit);
|
||||||
pamControlledUnits.remove(controlledUnit);
|
if (removed) {
|
||||||
notifyModelChanged(PamControllerInterface.REMOVE_CONTROLLEDUNIT);
|
notifyModelChanged(PamControllerInterface.REMOVE_CONTROLLEDUNIT);
|
||||||
}
|
}
|
||||||
// getMainFrame().revalidate(); //handled inside the GUIFrameManager by notify model changed. The controller should have
|
// getMainFrame().revalidate(); //handled inside the GUIFrameManager by notify model changed. The controller should have
|
||||||
@ -871,7 +863,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
int[] newOrder = ModuleOrderDialog.showDialog(this, parentFrame);
|
int[] newOrder = ModuleOrderDialog.showDialog(this, parentFrame);
|
||||||
if (newOrder != null) {
|
if (newOrder != null) {
|
||||||
// re-order the modules according the new list.
|
// re-order the modules according the new list.
|
||||||
reOrderModules(newOrder);
|
pamConfiguration.reOrderModules(newOrder);
|
||||||
|
|
||||||
notifyModelChanged(PamControllerInterface.REORDER_CONTROLLEDUNITS);
|
notifyModelChanged(PamControllerInterface.REORDER_CONTROLLEDUNITS);
|
||||||
|
|
||||||
@ -881,22 +873,22 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean reOrderModules(int[] newOrder) {
|
// private boolean reOrderModules(int[] newOrder) {
|
||||||
|
//
|
||||||
if (pamControlledUnits.size() != newOrder.length) return false;
|
// if (pamControlledUnits.size() != newOrder.length) return false;
|
||||||
|
//
|
||||||
ArrayList<PamControlledUnit> newList = new ArrayList<PamControlledUnit>();
|
// ArrayList<PamControlledUnit> newList = new ArrayList<PamControlledUnit>();
|
||||||
|
//
|
||||||
for (int i = 0; i < newOrder.length; i++) {
|
// for (int i = 0; i < newOrder.length; i++) {
|
||||||
|
//
|
||||||
newList.add(pamControlledUnits.get(newOrder[i]));
|
// newList.add(pamControlledUnits.get(newOrder[i]));
|
||||||
|
//
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
pamControlledUnits = newList;
|
// pamControlledUnits = newList;
|
||||||
|
//
|
||||||
return true;
|
// return true;
|
||||||
}
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Swaps the positions of two modules in the main list of modules and
|
* Swaps the positions of two modules in the main list of modules and
|
||||||
@ -922,20 +914,12 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamControlledUnit getControlledUnit(int iUnit) {
|
public PamControlledUnit getControlledUnit(int iUnit) {
|
||||||
if (iUnit < getNumControlledUnits()) {
|
return pamConfiguration.getControlledUnit(iUnit);
|
||||||
return pamControlledUnits.get(iUnit);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamControlledUnit findControlledUnit(String unitType) {
|
public PamControlledUnit findControlledUnit(String unitType) {
|
||||||
for (int i = 0; i < getNumControlledUnits(); i++) {
|
return pamConfiguration.findControlledUnit(unitType);
|
||||||
if (pamControlledUnits.get(i).getUnitType().equalsIgnoreCase(unitType)) {
|
|
||||||
return pamControlledUnits.get(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -944,17 +928,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
* @return list of units.
|
* @return list of units.
|
||||||
*/
|
*/
|
||||||
public ArrayList<PamControlledUnit> findControlledUnits(String unitType) {
|
public ArrayList<PamControlledUnit> findControlledUnits(String unitType) {
|
||||||
ArrayList<PamControlledUnit> l = new ArrayList<PamControlledUnit>();
|
return pamConfiguration.findControlledUnits(unitType);
|
||||||
int n = getNumControlledUnits();
|
|
||||||
PamControlledUnit pcu;
|
|
||||||
for (int i = 0; i < n; i++) {
|
|
||||||
pcu = getControlledUnit(i);
|
|
||||||
if (pcu.getUnitType().equals(unitType)) {
|
|
||||||
l.add(pcu);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return l;
|
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Get a list of PamControlledUnit units of a given type and name, allowing for nulls.
|
* Get a list of PamControlledUnit units of a given type and name, allowing for nulls.
|
||||||
@ -963,32 +937,12 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
* @return list of units.
|
* @return list of units.
|
||||||
*/
|
*/
|
||||||
public ArrayList<PamControlledUnit> findControlledUnits(String unitType, String unitName) {
|
public ArrayList<PamControlledUnit> findControlledUnits(String unitType, String unitName) {
|
||||||
ArrayList<PamControlledUnit> l = new ArrayList<PamControlledUnit>();
|
return pamConfiguration.findControlledUnits(unitType, unitName);
|
||||||
int n = getNumControlledUnits();
|
|
||||||
PamControlledUnit pcu;
|
|
||||||
for (int i = 0; i < n; i++) {
|
|
||||||
pcu = getControlledUnit(i);
|
|
||||||
if (unitType != null && !unitType.equals(pcu.getUnitType())) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (unitName != null && !unitName.equals(pcu.getUnitName())) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
l.add(pcu);
|
|
||||||
}
|
|
||||||
|
|
||||||
return l;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamControlledUnit findControlledUnit(String unitType, String unitName) {
|
public PamControlledUnit findControlledUnit(String unitType, String unitName) {
|
||||||
for (int i = 0; i < getNumControlledUnits(); i++) {
|
return pamConfiguration.findControlledUnit(unitType, unitName);
|
||||||
if (pamControlledUnits.get(i).getUnitType().equalsIgnoreCase(unitType) &&
|
|
||||||
pamControlledUnits.get(i).getUnitName().equalsIgnoreCase(unitName)) {
|
|
||||||
return pamControlledUnits.get(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1000,13 +954,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
* @return Existing module with that class and name.
|
* @return Existing module with that class and name.
|
||||||
*/
|
*/
|
||||||
public PamControlledUnit findControlledUnit(Class unitClass, String unitName) {
|
public PamControlledUnit findControlledUnit(Class unitClass, String unitName) {
|
||||||
for (int i = 0; i < getNumControlledUnits(); i++) {
|
return pamConfiguration.findControlledUnit(unitClass, unitName);
|
||||||
if (pamControlledUnits.get(i).getClass() == unitClass && (unitName == null ||
|
|
||||||
pamControlledUnits.get(i).getUnitName().equalsIgnoreCase(unitName))) {
|
|
||||||
return pamControlledUnits.get(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1015,13 +963,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
* @return List of current instances of this class.
|
* @return List of current instances of this class.
|
||||||
*/
|
*/
|
||||||
public ArrayList<PamControlledUnit> findControlledUnits(Class unitClass) {
|
public ArrayList<PamControlledUnit> findControlledUnits(Class unitClass) {
|
||||||
ArrayList<PamControlledUnit> foundUnits = new ArrayList<>();
|
return pamConfiguration.findControlledUnits(unitClass);
|
||||||
for (int i = 0; i < getNumControlledUnits(); i++) {
|
|
||||||
if (pamControlledUnits.get(i).getClass() == unitClass) {
|
|
||||||
foundUnits.add(pamControlledUnits.get(i));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return foundUnits;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1030,16 +972,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
* @return List of current instances of this class.
|
* @return List of current instances of this class.
|
||||||
*/
|
*/
|
||||||
public ArrayList<PamControlledUnit> findControlledUnits(Class unitClass, boolean includeSubClasses) {
|
public ArrayList<PamControlledUnit> findControlledUnits(Class unitClass, boolean includeSubClasses) {
|
||||||
if (includeSubClasses == false) {
|
return pamConfiguration.findControlledUnits(unitClass, includeSubClasses);
|
||||||
return findControlledUnits(unitClass);
|
|
||||||
}
|
|
||||||
ArrayList<PamControlledUnit> foundUnits = new ArrayList<>();
|
|
||||||
for (int i = 0; i < getNumControlledUnits(); i++) {
|
|
||||||
if (unitClass.isAssignableFrom(pamControlledUnits.get(i).getClass())) {
|
|
||||||
foundUnits.add(pamControlledUnits.get(i));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return foundUnits;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1047,28 +980,19 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
* @param the controlled unit name e.g. "my crazy click detector", not the default name.
|
* @param the controlled unit name e.g. "my crazy click detector", not the default name.
|
||||||
*/
|
*/
|
||||||
public boolean isControlledUnit(String controlName) {
|
public boolean isControlledUnit(String controlName) {
|
||||||
for (int i = 0; i < getNumControlledUnits(); i++) {
|
return pamConfiguration.isControlledUnit(controlName);
|
||||||
if (pamControlledUnits.get(i).getUnitName().equalsIgnoreCase(controlName)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getNumControlledUnits() {
|
public int getNumControlledUnits() {
|
||||||
if (pamControlledUnits == null) {
|
return pamConfiguration.getNumControlledUnits();
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
return pamControlledUnits.size();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static public PamController getInstance() {
|
static public PamController getInstance() {
|
||||||
return uniqueController;
|
return uniqueController;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public PamModel getModelInterface() {
|
||||||
public PamModelInterface getModelInterface() {
|
|
||||||
return pamModelInterface;
|
return pamModelInterface;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1186,6 +1110,8 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
|
|
||||||
manualStop = false;
|
manualStop = false;
|
||||||
|
|
||||||
|
ArrayList<PamControlledUnit> pamControlledUnits = pamConfiguration.getPamControlledUnits();
|
||||||
|
|
||||||
PamCalendar.setSessionStartTime(startTime);
|
PamCalendar.setSessionStartTime(startTime);
|
||||||
setPamStatus(PAM_RUNNING);
|
setPamStatus(PAM_RUNNING);
|
||||||
long t1 = System.currentTimeMillis();
|
long t1 = System.currentTimeMillis();
|
||||||
@ -1283,6 +1209,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
// actually stopped
|
// actually stopped
|
||||||
// statusCheckThread = new Thread(new StatusTimer());
|
// statusCheckThread = new Thread(new StatusTimer());
|
||||||
// statusCheckThread.start();
|
// statusCheckThread.start();
|
||||||
|
ArrayList<PamControlledUnit> pamControlledUnits = pamConfiguration.getPamControlledUnits();
|
||||||
|
|
||||||
// tell all controlled units to stop
|
// tell all controlled units to stop
|
||||||
for (int iU = 0; iU < pamControlledUnits.size(); iU++) {
|
for (int iU = 0; iU < pamControlledUnits.size(); iU++) {
|
||||||
@ -1358,6 +1285,8 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
* it is necessary to make sure that all internal datablock
|
* it is necessary to make sure that all internal datablock
|
||||||
* buffers have had time to empty.
|
* buffers have had time to empty.
|
||||||
*/
|
*/
|
||||||
|
ArrayList<PamControlledUnit> pamControlledUnits = pamConfiguration.getPamControlledUnits();
|
||||||
|
|
||||||
if (PamModel.getPamModel().isMultiThread()) {
|
if (PamModel.getPamModel().isMultiThread()) {
|
||||||
for (int iU = 0; iU < pamControlledUnits.size(); iU++) {
|
for (int iU = 0; iU < pamControlledUnits.size(); iU++) {
|
||||||
pamControlledUnits.get(iU).flushDataBlockBuffers(2000);
|
pamControlledUnits.get(iU).flushDataBlockBuffers(2000);
|
||||||
@ -1475,6 +1404,8 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
// }
|
// }
|
||||||
// Debug.out.println(" Are we finished? " + areWeFinished);
|
// Debug.out.println(" Are we finished? " + areWeFinished);
|
||||||
// return areWeFinished;
|
// return areWeFinished;
|
||||||
|
ArrayList<PamControlledUnit> pamControlledUnits = pamConfiguration.getPamControlledUnits();
|
||||||
|
|
||||||
boolean running = false;
|
boolean running = false;
|
||||||
for (PamControlledUnit aUnit : pamControlledUnits) {
|
for (PamControlledUnit aUnit : pamControlledUnits) {
|
||||||
int numProcesses = aUnit.getNumPamProcesses();
|
int numProcesses = aUnit.getNumPamProcesses();
|
||||||
@ -1497,16 +1428,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
* PAMGUARD settings via the database and binary storage modules.
|
* PAMGUARD settings via the database and binary storage modules.
|
||||||
*/
|
*/
|
||||||
private void saveSettings(long timeNow) {
|
private void saveSettings(long timeNow) {
|
||||||
PamControlledUnit pcu;
|
pamConfiguration.saveSettings(timeNow);
|
||||||
PamSettingsSource settingsSource;
|
|
||||||
for (int iU = 0; iU < pamControlledUnits.size(); iU++) {
|
|
||||||
pcu = pamControlledUnits.get(iU);
|
|
||||||
if (PamSettingsSource.class.isAssignableFrom(pcu.getClass())) {
|
|
||||||
settingsSource = (PamSettingsSource) pcu;
|
|
||||||
settingsSource.saveStartSettings(timeNow);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
PamguardXMLWriter.getXMLWriter().writeStartSettings(timeNow);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1523,18 +1445,20 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
* @return path to the binary store.
|
* @return path to the binary store.
|
||||||
*/
|
*/
|
||||||
public String findBinaryStorePath() {
|
public String findBinaryStorePath() {
|
||||||
BinaryStore binaryControl = BinaryStore.findBinaryStoreControl();
|
// TODO get rid of the singleton binary store control and do from the Config.class
|
||||||
if (binaryControl == null) {
|
// BinaryStore binaryControl = BinaryStore.findBinaryStoreControl();
|
||||||
return null;
|
// if (binaryControl == null) {
|
||||||
}
|
// return null;
|
||||||
String storeLoc = binaryControl.getBinaryStoreSettings().getStoreLocation();
|
// }
|
||||||
if (storeLoc == null) {
|
// String storeLoc = binaryControl.getBinaryStoreSettings().getStoreLocation();
|
||||||
return "";
|
// if (storeLoc == null) {
|
||||||
}
|
// return "";
|
||||||
if (storeLoc.endsWith(File.separator) == false) {
|
// }
|
||||||
storeLoc += File.separator;
|
// if (storeLoc.endsWith(File.separator) == false) {
|
||||||
}
|
// storeLoc += File.separator;
|
||||||
return storeLoc;
|
// }
|
||||||
|
// return storeLoc;
|
||||||
|
return pamConfiguration.findBinaryStorePath();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1544,15 +1468,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
* @see PamSettingsSource
|
* @see PamSettingsSource
|
||||||
*/
|
*/
|
||||||
public ArrayList<PamSettingsSource> findSettingsSources() {
|
public ArrayList<PamSettingsSource> findSettingsSources() {
|
||||||
ArrayList<PamSettingsSource> settingsSources = new ArrayList<PamSettingsSource>();
|
return pamConfiguration.findSettingsSources();
|
||||||
PamControlledUnit pcu;
|
|
||||||
for (int iU = 0; iU < pamControlledUnits.size(); iU++) {
|
|
||||||
pcu = pamControlledUnits.get(iU);
|
|
||||||
if (PamSettingsSource.class.isAssignableFrom(pcu.getClass())) {
|
|
||||||
settingsSources.add((PamSettingsSource) pcu);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return settingsSources;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1581,37 +1497,37 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public ArrayList<PamDataBlock> getFFTDataBlocks() {
|
public ArrayList<PamDataBlock> getFFTDataBlocks() {
|
||||||
return makeDataBlockList(FFTDataUnit.class, true);
|
return pamConfiguration.getFFTDataBlocks();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamDataBlock getFFTDataBlock(int id) {
|
public PamDataBlock getFFTDataBlock(int id) {
|
||||||
return getDataBlock(FFTDataUnit.class, id);
|
return pamConfiguration.getDataBlock(FFTDataUnit.class, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamDataBlock getFFTDataBlock(String name) {
|
public PamDataBlock getFFTDataBlock(String name) {
|
||||||
return getDataBlock(FFTDataUnit.class, name);
|
return pamConfiguration.getDataBlock(FFTDataUnit.class, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ArrayList<PamDataBlock> getRawDataBlocks() {
|
public ArrayList<PamDataBlock> getRawDataBlocks() {
|
||||||
return makeDataBlockList(RawDataUnit.class, true);
|
return pamConfiguration.makeDataBlockList(RawDataUnit.class, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamRawDataBlock getRawDataBlock(int id) {
|
public PamRawDataBlock getRawDataBlock(int id) {
|
||||||
return (PamRawDataBlock) getDataBlock(RawDataUnit.class, id);
|
return (PamRawDataBlock) pamConfiguration.getDataBlock(RawDataUnit.class, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamRawDataBlock getRawDataBlock(String name) {
|
public PamRawDataBlock getRawDataBlock(String name) {
|
||||||
return (PamRawDataBlock) getDataBlock(RawDataUnit.class, name);
|
return pamConfiguration.getRawDataBlock(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ArrayList<PamDataBlock> getDetectorDataBlocks() {
|
public ArrayList<PamDataBlock> getDetectorDataBlocks() {
|
||||||
return makeDataBlockList(PamDetection.class, true);
|
return pamConfiguration.getDetectorDataBlocks();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1649,33 +1565,16 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
* true.
|
* true.
|
||||||
*/
|
*/
|
||||||
public ArrayList<PamDataBlock> getDataBlocks(Class blockType, boolean includeSubClasses) {
|
public ArrayList<PamDataBlock> getDataBlocks(Class blockType, boolean includeSubClasses) {
|
||||||
return makeDataBlockList(blockType, includeSubClasses);
|
return pamConfiguration.getDataBlocks(blockType, includeSubClasses);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ArrayList<PamDataBlock> getDataBlocks() {
|
public ArrayList<PamDataBlock> getDataBlocks() {
|
||||||
return makeDataBlockList(PamDataUnit.class, true);
|
return pamConfiguration.getDataBlocks();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArrayList<PamDataBlock> getPlottableDataBlocks(GeneralProjector generalProjector) {
|
public ArrayList<PamDataBlock> getPlottableDataBlocks(GeneralProjector generalProjector) {
|
||||||
|
return pamConfiguration.getPlottableDataBlocks(generalProjector);
|
||||||
ArrayList<PamDataBlock> blockList = new ArrayList<PamDataBlock>();
|
|
||||||
PamProcess pP;
|
|
||||||
Class unitClass;
|
|
||||||
PanelOverlayDraw panelOverlayDraw;
|
|
||||||
|
|
||||||
for (int iU = 0; iU < pamControlledUnits.size(); iU++) {
|
|
||||||
for (int iP = 0; iP < pamControlledUnits.get(iU)
|
|
||||||
.getNumPamProcesses(); iP++) {
|
|
||||||
pP = pamControlledUnits.get(iU).getPamProcess(iP);
|
|
||||||
for (int j = 0; j < pP.getNumOutputDataBlocks(); j++) {
|
|
||||||
if(pP.getOutputDataBlock(j).canDraw(generalProjector)) {
|
|
||||||
blockList.add(pP.getOutputDataBlock(j));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return blockList;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1702,38 +1601,9 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
private ArrayList<PamDataBlock> makeDataBlockList(Class classType, boolean includSubClasses) {
|
// private ArrayList<PamDataBlock> makeDataBlockList(Class classType, boolean includSubClasses) {
|
||||||
|
// return pamConfiguration.makeDataBlockList(classType, includSubClasses);
|
||||||
ArrayList<PamDataBlock> blockList = new ArrayList<PamDataBlock>();
|
// }
|
||||||
PamProcess pP;
|
|
||||||
Class unitClass;
|
|
||||||
|
|
||||||
for (int iU = 0; iU < pamControlledUnits.size(); iU++) {
|
|
||||||
for (int iP = 0; iP < pamControlledUnits.get(iU)
|
|
||||||
.getNumPamProcesses(); iP++) {
|
|
||||||
pP = pamControlledUnits.get(iU).getPamProcess(iP);
|
|
||||||
for (int j = 0; j < pP.getNumOutputDataBlocks(); j++) {
|
|
||||||
//System.out.println("Comparing "+pP.getOutputDataBlock(j).getUnitClass().getCanonicalName()+" to "+classType.getCanonicalName());
|
|
||||||
if ((unitClass = pP.getOutputDataBlock(j).getUnitClass()) == classType) {
|
|
||||||
blockList.add(pP.getOutputDataBlock(j));
|
|
||||||
}
|
|
||||||
else if (includSubClasses) {
|
|
||||||
if (classType != null && classType.isAssignableFrom(unitClass)) {
|
|
||||||
blockList.add(pP.getOutputDataBlock(j));
|
|
||||||
}
|
|
||||||
// while ((unitClass = unitClass.getSuperclass()) != null) {
|
|
||||||
// if (unitClass == classType) {
|
|
||||||
// blockList.add(pP.getOutputDataBlock(j));
|
|
||||||
// break;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return blockList;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Find a block of a given type with the id number, or null if the number
|
* Find a block of a given type with the id number, or null if the number
|
||||||
@ -1745,10 +1615,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public PamDataBlock getDataBlock(Class blockType, int id) {
|
public PamDataBlock getDataBlock(Class blockType, int id) {
|
||||||
|
return pamConfiguration.getDataBlock(blockType, id);
|
||||||
ArrayList<PamDataBlock> blocks = getDataBlocks(blockType, true);
|
|
||||||
if (id >= 0 && id < blocks.size()) return blocks.get(id);
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1760,23 +1627,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public PamDataBlock getDataBlock(Class blockType, String name) {
|
public PamDataBlock getDataBlock(Class blockType, String name) {
|
||||||
if (name == null) return null;
|
return pamConfiguration.getDataBlock(blockType, name);
|
||||||
ArrayList<PamDataBlock> blocks = getDataBlocks(blockType, true);
|
|
||||||
for (PamDataBlock dataBlock:blocks) {
|
|
||||||
if (name.equals(dataBlock.getLongDataName())) { // check for a long name match first
|
|
||||||
return dataBlock;
|
|
||||||
}
|
|
||||||
if (dataBlock instanceof FFTDataBlock) {
|
|
||||||
FFTDataBlock fb = (FFTDataBlock) dataBlock;
|
|
||||||
if (name.equals(fb.getOldLongDataName())) {
|
|
||||||
return dataBlock;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (name.equals(dataBlock.toString())) {
|
|
||||||
return dataBlock;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1785,20 +1636,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
* @return block
|
* @return block
|
||||||
*/
|
*/
|
||||||
public PamDataBlock getDataBlockByLongName(String longName) {
|
public PamDataBlock getDataBlockByLongName(String longName) {
|
||||||
if (longName == null) return null;
|
return pamConfiguration.getDataBlockByLongName(longName);
|
||||||
ArrayList<PamDataBlock> allBlocks = getDataBlocks();
|
|
||||||
for (PamDataBlock dataBlock:allBlocks) {
|
|
||||||
if (longName.equals(dataBlock.getLongDataName())) {
|
|
||||||
return dataBlock;
|
|
||||||
}
|
|
||||||
if (dataBlock instanceof FFTDataBlock) {
|
|
||||||
FFTDataBlock fb = (FFTDataBlock) dataBlock;
|
|
||||||
if (longName.equals(fb.getOldLongDataName())) {
|
|
||||||
return dataBlock;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1885,11 +1723,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
|
|
||||||
MasterReferencePoint.notifyModelChanged(changeType);
|
MasterReferencePoint.notifyModelChanged(changeType);
|
||||||
|
|
||||||
// also tell all PamControlledUnits since they may want to find their data source
|
pamConfiguration.notifyModelChanged(changeType);
|
||||||
// it that was created after they were - i.e. dependencies have got all muddled
|
|
||||||
for (int i = 0; i < pamControlledUnits.size(); i++) {
|
|
||||||
pamControlledUnits.get(i).notifyModelChanged(changeType);
|
|
||||||
}
|
|
||||||
|
|
||||||
PamSettingManager.getInstance().notifyModelChanged(changeType);
|
PamSettingManager.getInstance().notifyModelChanged(changeType);
|
||||||
|
|
||||||
@ -1960,6 +1794,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
private void changedThreading() {
|
private void changedThreading() {
|
||||||
PamProcess pamProcess;
|
PamProcess pamProcess;
|
||||||
int nP;
|
int nP;
|
||||||
|
ArrayList<PamControlledUnit> pamControlledUnits = pamConfiguration.getPamControlledUnits();
|
||||||
for (int i = 0; i < pamControlledUnits.size(); i++) {
|
for (int i = 0; i < pamControlledUnits.size(); i++) {
|
||||||
nP = pamControlledUnits.get(i).getNumPamProcesses();
|
nP = pamControlledUnits.get(i).getNumPamProcesses();
|
||||||
for (int iP = 0; iP < nP; iP++) {
|
for (int iP = 0; iP < nP; iP++) {
|
||||||
@ -1993,13 +1828,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Serializable getSettingsReference() {
|
public Serializable getSettingsReference() {
|
||||||
ArrayList<UsedModuleInfo> usedModules = new ArrayList<UsedModuleInfo>();
|
return pamConfiguration.getSettingsReference();
|
||||||
for (int i = 0; i < pamControlledUnits.size(); i++) {
|
|
||||||
usedModules.add(new UsedModuleInfo(pamControlledUnits.get(i).getClass().getName(),
|
|
||||||
pamControlledUnits.get(i).getUnitType(),
|
|
||||||
pamControlledUnits.get(i).getUnitName()));
|
|
||||||
}
|
|
||||||
return usedModules;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -2041,10 +1870,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
|
|
||||||
// also tell all PamControlledUnits since they may want to find their data source
|
// also tell all PamControlledUnits since they may want to find their data source
|
||||||
// it that was created after they were - i.e. dependencies have got all muddled
|
// it that was created after they were - i.e. dependencies have got all muddled
|
||||||
for (int i = 0; i < pamControlledUnits.size(); i++) {
|
pamConfiguration.destroyModel();
|
||||||
pamControlledUnits.get(i).notifyModelChanged(DESTROY_EVERYTHING);
|
|
||||||
}
|
|
||||||
pamControlledUnits = null;
|
|
||||||
|
|
||||||
PamSettingManager.getInstance().reset();
|
PamSettingManager.getInstance().reset();
|
||||||
|
|
||||||
@ -2369,6 +2195,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
public void loadOldSettings(PamSettingsGroup settingsGroup) {
|
public void loadOldSettings(PamSettingsGroup settingsGroup) {
|
||||||
loadOldSettings(settingsGroup, true);
|
loadOldSettings(settingsGroup, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called to load a specific set of PAMGUARD settings in
|
* Called to load a specific set of PAMGUARD settings in
|
||||||
* viewer mode, which were previously loaded in from a
|
* viewer mode, which were previously loaded in from a
|
||||||
@ -2473,7 +2300,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
aUnit = findControlledUnit(moduleClass, aModuleInfo.unitName);
|
aUnit = findControlledUnit(moduleClass, aModuleInfo.unitName);
|
||||||
currentPos = pamControlledUnits.indexOf(aUnit);
|
currentPos = pamConfiguration.getControlledUnitIndex(aUnit);
|
||||||
if (currentPos >= 0) {
|
if (currentPos >= 0) {
|
||||||
temp = orderLUT[nFound];
|
temp = orderLUT[nFound];
|
||||||
orderLUT[nFound] = currentPos;
|
orderLUT[nFound] = currentPos;
|
||||||
@ -2839,4 +2666,12 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
return this.globalMediumManager;
|
return this.globalMediumManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gt the main PAMGuard configuration (list of connected modules).
|
||||||
|
* @return the pamConfiguration
|
||||||
|
*/
|
||||||
|
public PamConfiguration getPamConfiguration() {
|
||||||
|
return pamConfiguration;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ import java.util.ArrayList;
|
|||||||
|
|
||||||
import javax.swing.JFrame;
|
import javax.swing.JFrame;
|
||||||
|
|
||||||
import PamModel.PamModelInterface;
|
import PamModel.PamModel;
|
||||||
import PamModel.PamModuleInfo;
|
import PamModel.PamModuleInfo;
|
||||||
import PamView.GuiFrameManager;
|
import PamView.GuiFrameManager;
|
||||||
import PamView.PamViewInterface;
|
import PamView.PamViewInterface;
|
||||||
@ -102,7 +102,7 @@ public interface PamControllerInterface {
|
|||||||
*
|
*
|
||||||
* @return Reference to the PamGuard model
|
* @return Reference to the PamGuard model
|
||||||
*/
|
*/
|
||||||
public PamModelInterface getModelInterface();
|
public PamModel getModelInterface();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instruction to the controller (probably from a menu command inthe view)
|
* Instruction to the controller (probably from a menu command inthe view)
|
||||||
|
@ -293,7 +293,7 @@ public class PamSettingManager {
|
|||||||
* call this for at least one set of settings. Often the PamSettings
|
* call this for at least one set of settings. Often the PamSettings
|
||||||
* is implemented by the class that extends PamControlledunit, but
|
* is implemented by the class that extends PamControlledunit, but
|
||||||
* it's also possible to have multiple sub modules, processes or displays
|
* it's also possible to have multiple sub modules, processes or displays
|
||||||
* implemnt PamSettings so that different settings for different bits of
|
* implement PamSettings so that different settings for different bits of
|
||||||
* a PamControlledUnit are stored separately.
|
* a PamControlledUnit are stored separately.
|
||||||
* @see PamSettings
|
* @see PamSettings
|
||||||
* @see PamControlledUnit
|
* @see PamControlledUnit
|
||||||
|
@ -74,7 +74,7 @@ import PamUtils.FileFinder;
|
|||||||
* PamController.
|
* PamController.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
final public class PamModel implements PamModelInterface, PamSettings {
|
final public class PamModel implements PamSettings {
|
||||||
|
|
||||||
private PamController pamController;
|
private PamController pamController;
|
||||||
|
|
||||||
@ -982,7 +982,6 @@ final public class PamModel implements PamModelInterface, PamSettings {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean modelSettings(JFrame frame) {
|
public boolean modelSettings(JFrame frame) {
|
||||||
PamModelSettings newSettings = ThreadingDialog.showDialog(frame, pamModelSettings);
|
PamModelSettings newSettings = ThreadingDialog.showDialog(frame, pamModelSettings);
|
||||||
if (newSettings != null) {
|
if (newSettings != null) {
|
||||||
|
@ -29,6 +29,7 @@ import javax.swing.JFrame;
|
|||||||
* order that the PamController and the PamView can interface with the
|
* order that the PamController and the PamView can interface with the
|
||||||
* model.
|
* model.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public interface PamModelInterface {
|
public interface PamModelInterface {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -10,6 +10,7 @@ import javax.swing.JMenu;
|
|||||||
import javax.swing.JMenuItem;
|
import javax.swing.JMenuItem;
|
||||||
import javax.swing.JOptionPane;
|
import javax.swing.JOptionPane;
|
||||||
|
|
||||||
|
import PamController.PamConfiguration;
|
||||||
import PamController.PamControlledUnit;
|
import PamController.PamControlledUnit;
|
||||||
import PamController.PamController;
|
import PamController.PamController;
|
||||||
import PamController.PamControllerInterface;
|
import PamController.PamControllerInterface;
|
||||||
@ -34,6 +35,9 @@ public class PamModuleInfo implements PamDependent{
|
|||||||
private Class moduleClass;
|
private Class moduleClass;
|
||||||
private String toolTipText;
|
private String toolTipText;
|
||||||
|
|
||||||
|
private static final Class[] constrParams1 = {PamConfiguration.class, String.class};
|
||||||
|
private static final Class[] constrParams2 = {String.class};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A list of possible GUI types the module can have. These are received from flags in PAMGuiManager();
|
* A list of possible GUI types the module can have. These are received from flags in PAMGuiManager();
|
||||||
*/
|
*/
|
||||||
@ -209,7 +213,7 @@ public class PamModuleInfo implements PamDependent{
|
|||||||
dependencyManager.checkDependency(parentFrame, moduleInfo, true);
|
dependencyManager.checkDependency(parentFrame, moduleInfo, true);
|
||||||
}
|
}
|
||||||
// create a new PamControlledUnit and add it to PamGuard ...
|
// create a new PamControlledUnit and add it to PamGuard ...
|
||||||
PamControllerInterface pamController = PamController.getInstance();
|
PamController pamController = PamController.getInstance();
|
||||||
|
|
||||||
pamController.addModule(parentFrame, moduleInfo);
|
pamController.addModule(parentFrame, moduleInfo);
|
||||||
}
|
}
|
||||||
@ -221,29 +225,42 @@ public class PamModuleInfo implements PamDependent{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public PamControlledUnit create(String unitName) {
|
public PamControlledUnit create(String unitName) {
|
||||||
|
return create(null, unitName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PamControlledUnit create(PamConfiguration pamConfiguration, String unitName) {
|
||||||
|
|
||||||
PamControlledUnit newUnit = null;
|
PamControlledUnit newUnit = null;
|
||||||
Class[] paramList = new Class[1];
|
// Class[] paramList = new Class[1];
|
||||||
paramList[0] = unitName.getClass();
|
// paramList[0] = unitName.getClass();
|
||||||
|
boolean error = false;
|
||||||
try {
|
try {
|
||||||
Constructor constructor = moduleClass.getConstructor(paramList);
|
Constructor constructor = moduleClass.getConstructor(constrParams1);
|
||||||
// Debug.out.println("unitName:"+ unitName);
|
newUnit = (PamControlledUnit) constructor.newInstance(pamConfiguration, unitName);
|
||||||
newUnit = (PamControlledUnit) constructor.newInstance(unitName);
|
|
||||||
newUnit.setPamModuleInfo(this);
|
newUnit.setPamModuleInfo(this);
|
||||||
}
|
}
|
||||||
catch (Exception Ex) {
|
catch (Exception Ex) {
|
||||||
String title = "Error loading module";
|
}
|
||||||
String msg = "There was an error trying to load " + unitName + ".<p>" +
|
if (newUnit == null) {
|
||||||
"If this is a core Pamguard module, please copy the error message text and email to " +
|
try {
|
||||||
"support@pamguard.org.<p>" +
|
Constructor constructor = moduleClass.getConstructor(constrParams2);
|
||||||
"If this is a plug-in, the error may have been caused by an incompatibility between " +
|
newUnit = (PamControlledUnit) constructor.newInstance(unitName);
|
||||||
"it and this version of PAMGuard, or a problem with the code. Please check the developer's website for help.<p>" +
|
newUnit.setPamModuleInfo(this);
|
||||||
"This module will not be loaded.";
|
}
|
||||||
String help = null;
|
catch (Exception Ex) {
|
||||||
int ans = WarnOnce.showWarning(title, msg, WarnOnce.WARNING_MESSAGE, help, Ex);
|
String title = "Error loading module";
|
||||||
System.err.println("Exception while loading " + Ex.getMessage());
|
String msg = "There was an error trying to load " + unitName + ".<p>" +
|
||||||
Ex.printStackTrace();
|
"If this is a core Pamguard module, please copy the error message text and email to " +
|
||||||
return null;
|
"support@pamguard.org.<p>" +
|
||||||
|
"If this is a plug-in, the error may have been caused by an incompatibility between " +
|
||||||
|
"it and this version of PAMGuard, or a problem with the code. Please check the developer's website for help.<p>" +
|
||||||
|
"This module will not be loaded.";
|
||||||
|
String help = null;
|
||||||
|
int ans = WarnOnce.showWarning(title, msg, WarnOnce.WARNING_MESSAGE, help, Ex);
|
||||||
|
System.err.println("Exception while loading " + Ex.getMessage());
|
||||||
|
Ex.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setNInstances(nInstances + 1);
|
setNInstances(nInstances + 1);
|
||||||
@ -251,6 +268,18 @@ public class PamModuleInfo implements PamDependent{
|
|||||||
return newUnit;
|
return newUnit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Constructor findConstructor() throws NoSuchMethodException, SecurityException {
|
||||||
|
Constructor constructor = null;
|
||||||
|
try {
|
||||||
|
constructor = moduleClass.getConstructor(constrParams1);
|
||||||
|
return constructor;
|
||||||
|
} catch (NoSuchMethodException | SecurityException e1) {
|
||||||
|
}
|
||||||
|
|
||||||
|
constructor = moduleClass.getConstructor(constrParams2);
|
||||||
|
return constructor;
|
||||||
|
}
|
||||||
|
|
||||||
private void moduleRemoved(PamControlledUnit controlledUnit) {
|
private void moduleRemoved(PamControlledUnit controlledUnit) {
|
||||||
|
|
||||||
setNInstances(nInstances - 1);
|
setNInstances(nInstances - 1);
|
||||||
@ -376,7 +405,7 @@ public class PamModuleInfo implements PamDependent{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
int ans = JOptionPane.showConfirmDialog(pamControlledUnit.getPamView().getGuiFrame(),
|
int ans = JOptionPane.showConfirmDialog(pamControlledUnit.getGuiFrame(),
|
||||||
"Do you really want to remove the module "
|
"Do you really want to remove the module "
|
||||||
+ pamControlledUnit.getUnitName());
|
+ pamControlledUnit.getUnitName());
|
||||||
if (ans == JOptionPane.YES_OPTION) {
|
if (ans == JOptionPane.YES_OPTION) {
|
||||||
|
@ -87,7 +87,6 @@ import PamController.PamguardVersionInfo;
|
|||||||
import PamController.settings.SettingsImport;
|
import PamController.settings.SettingsImport;
|
||||||
import PamModel.CommonPluginInterface;
|
import PamModel.CommonPluginInterface;
|
||||||
import PamModel.PamModel;
|
import PamModel.PamModel;
|
||||||
import PamModel.PamModelInterface;
|
|
||||||
import PamModel.PamModuleInfo;
|
import PamModel.PamModuleInfo;
|
||||||
import PamModel.PamPluginInterface;
|
import PamModel.PamPluginInterface;
|
||||||
import PamModel.AboutPluginDisplay;
|
import PamModel.AboutPluginDisplay;
|
||||||
@ -133,12 +132,15 @@ public class PamGui extends PamView implements WindowListener, PamSettings {
|
|||||||
* Outer layered pane which allows things to be added the GUI.
|
* Outer layered pane which allows things to be added the GUI.
|
||||||
*/
|
*/
|
||||||
private JLayeredPane layeredPane;
|
private JLayeredPane layeredPane;
|
||||||
|
private PamController pamController;
|
||||||
|
|
||||||
public PamGui(PamControllerInterface pamControllerInterface,
|
public PamGui(PamController pamControllerInterface,
|
||||||
PamModelInterface pamModelInterface, int frameNumber)
|
PamModel pamModelInterface, int frameNumber)
|
||||||
{
|
{
|
||||||
super(pamControllerInterface, pamModelInterface, frameNumber);
|
super(pamControllerInterface, pamModelInterface, frameNumber);
|
||||||
|
|
||||||
|
this.pamController = pamControllerInterface;
|
||||||
|
|
||||||
startMenuEnabler = new MenuItemEnabler();
|
startMenuEnabler = new MenuItemEnabler();
|
||||||
stopMenuEnabler = new MenuItemEnabler();
|
stopMenuEnabler = new MenuItemEnabler();
|
||||||
stopMenuEnabler.enableItems(false);
|
stopMenuEnabler.enableItems(false);
|
||||||
@ -1198,7 +1200,7 @@ public class PamGui extends PamView implements WindowListener, PamSettings {
|
|||||||
|
|
||||||
class menuShowObjectDiagram implements ActionListener {
|
class menuShowObjectDiagram implements ActionListener {
|
||||||
public void actionPerformed(ActionEvent ev){
|
public void actionPerformed(ActionEvent ev){
|
||||||
PamObjectViewer.Show(getGuiFrame());
|
PamObjectViewer.Show(getGuiFrame(), pamController.getPamConfiguration());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ import javax.swing.JMenu;
|
|||||||
import javax.swing.JMenuBar;
|
import javax.swing.JMenuBar;
|
||||||
import javax.swing.JMenuItem;
|
import javax.swing.JMenuItem;
|
||||||
|
|
||||||
import PamModel.PamModelInterface;
|
import PamModel.PamModel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author dgillespie
|
* @author dgillespie
|
||||||
@ -39,7 +39,7 @@ import PamModel.PamModelInterface;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class PamMenu {
|
public class PamMenu {
|
||||||
static public JMenuBar createBasicMenu(PamModelInterface pamModelInterface,
|
static public JMenuBar createBasicMenu(PamModel pamModelInterface,
|
||||||
ActionListener actionListener) {
|
ActionListener actionListener) {
|
||||||
|
|
||||||
JMenuBar menuBar = new JMenuBar();
|
JMenuBar menuBar = new JMenuBar();
|
||||||
@ -52,7 +52,7 @@ public class PamMenu {
|
|||||||
return menuBar;
|
return menuBar;
|
||||||
}
|
}
|
||||||
|
|
||||||
static public JMenu fileMenu(PamModelInterface pamModelInterface,
|
static public JMenu fileMenu(PamModel pamModelInterface,
|
||||||
ActionListener actionListener) {
|
ActionListener actionListener) {
|
||||||
JMenuItem menuItem;
|
JMenuItem menuItem;
|
||||||
JMenu menu = new JMenu("File");
|
JMenu menu = new JMenu("File");
|
||||||
@ -64,7 +64,7 @@ public class PamMenu {
|
|||||||
return menu;
|
return menu;
|
||||||
}
|
}
|
||||||
|
|
||||||
static public JMenu loggingMenu(PamModelInterface pamModelInterface,
|
static public JMenu loggingMenu(PamModel pamModelInterface,
|
||||||
ActionListener actionListener) {
|
ActionListener actionListener) {
|
||||||
JMenuItem menuItem;
|
JMenuItem menuItem;
|
||||||
JMenu menu = new JMenu("Logging");
|
JMenu menu = new JMenu("Logging");
|
||||||
@ -76,7 +76,7 @@ public class PamMenu {
|
|||||||
return menu;
|
return menu;
|
||||||
}
|
}
|
||||||
|
|
||||||
static public JMenu detectionMenu(PamModelInterface pamModelInterface,
|
static public JMenu detectionMenu(PamModel pamModelInterface,
|
||||||
ActionListener actionListener) {
|
ActionListener actionListener) {
|
||||||
JMenu menu = new JMenu("Detection");
|
JMenu menu = new JMenu("Detection");
|
||||||
JMenuItem menuItem;
|
JMenuItem menuItem;
|
||||||
@ -108,7 +108,7 @@ public class PamMenu {
|
|||||||
return menu;
|
return menu;
|
||||||
}
|
}
|
||||||
|
|
||||||
static public JMenu displayMenu(PamModelInterface pamModelInterface,
|
static public JMenu displayMenu(PamModel pamModelInterface,
|
||||||
ActionListener actionListener) {
|
ActionListener actionListener) {
|
||||||
JMenu menu = new JMenu("Display");
|
JMenu menu = new JMenu("Display");
|
||||||
JMenuItem menuItem;
|
JMenuItem menuItem;
|
||||||
|
@ -42,6 +42,7 @@ import javax.swing.Timer;
|
|||||||
import javax.swing.WindowConstants;
|
import javax.swing.WindowConstants;
|
||||||
|
|
||||||
import PamController.NewModuleDialog;
|
import PamController.NewModuleDialog;
|
||||||
|
import PamController.PamConfiguration;
|
||||||
import PamController.PamControlledUnit;
|
import PamController.PamControlledUnit;
|
||||||
import PamController.PamControlledUnitSettings;
|
import PamController.PamControlledUnitSettings;
|
||||||
import PamController.PamController;
|
import PamController.PamController;
|
||||||
@ -114,9 +115,11 @@ public class PamObjectViewer implements PamViewInterface, ComponentListener,
|
|||||||
|
|
||||||
private Stroke arrowStroke, instantArrowStroke;
|
private Stroke arrowStroke, instantArrowStroke;
|
||||||
|
|
||||||
|
private PamConfiguration pamConfiguration;
|
||||||
|
|
||||||
// Font controllerFont, processFont, datablockFont;
|
// Font controllerFont, processFont, datablockFont;
|
||||||
|
|
||||||
private PamObjectViewer(JFrame frame) {
|
private PamObjectViewer(Frame frame) {
|
||||||
|
|
||||||
arrowStroke = new BasicStroke(1.5f);
|
arrowStroke = new BasicStroke(1.5f);
|
||||||
instantArrowStroke = new BasicStroke(1.5f);
|
instantArrowStroke = new BasicStroke(1.5f);
|
||||||
@ -125,23 +128,27 @@ public class PamObjectViewer implements PamViewInterface, ComponentListener,
|
|||||||
|
|
||||||
objectFrame = new ObjectFrame(frame);
|
objectFrame = new ObjectFrame(frame);
|
||||||
|
|
||||||
MakeDiagram();
|
// MakeDiagram();
|
||||||
|
|
||||||
PamController.getInstance().addView(this);
|
PamController.getInstance().addView(this);
|
||||||
|
|
||||||
PamSettingManager.getInstance().registerSettings(this);
|
PamSettingManager.getInstance().registerSettings(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
static public PamObjectViewer getObjectViewer(JFrame frame) {
|
static public PamObjectViewer getObjectViewer(Frame frame) {
|
||||||
if (singleInstance == null) {
|
if (singleInstance == null) {
|
||||||
singleInstance = new PamObjectViewer(frame);
|
singleInstance = new PamObjectViewer(frame);
|
||||||
}
|
}
|
||||||
return singleInstance;
|
return singleInstance;
|
||||||
}
|
}
|
||||||
|
|
||||||
static public void Show(JFrame frame) {
|
static public void Show(Frame frame, PamConfiguration pamConfiguration) {
|
||||||
|
|
||||||
|
getObjectViewer(frame).setConfiguration(pamConfiguration);
|
||||||
getObjectViewer(frame).objectFrame.setVisible(true);
|
getObjectViewer(frame).objectFrame.setVisible(true);
|
||||||
|
|
||||||
|
singleInstance.MakeDiagram();
|
||||||
|
|
||||||
// Go through all of the processes/datablocks in every view and update button/tooltip text.
|
// Go through all of the processes/datablocks in every view and update button/tooltip text.
|
||||||
// Mostly done for the FFT Engine process because it includes the FFT size in the
|
// Mostly done for the FFT Engine process because it includes the FFT size in the
|
||||||
// process name, and without this code the name would get set the first time you open
|
// process name, and without this code the name would get set the first time you open
|
||||||
@ -164,6 +171,10 @@ public class PamObjectViewer implements PamViewInterface, ComponentListener,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setConfiguration(PamConfiguration pamConfiguration) {
|
||||||
|
this.pamConfiguration = pamConfiguration;
|
||||||
|
}
|
||||||
|
|
||||||
void MakeDiagram() {
|
void MakeDiagram() {
|
||||||
|
|
||||||
if (pamObjectViewerSettings.viewStyle == PamObjectViewerSettings.VIEWBYPROCESS) {
|
if (pamObjectViewerSettings.viewStyle == PamObjectViewerSettings.VIEWBYPROCESS) {
|
||||||
@ -180,12 +191,16 @@ public class PamObjectViewer implements PamViewInterface, ComponentListener,
|
|||||||
private void makeControllerDiagram() {
|
private void makeControllerDiagram() {
|
||||||
|
|
||||||
clearDiagram();
|
clearDiagram();
|
||||||
PamControllerInterface pamController = PamController.getInstance();
|
|
||||||
|
if (pamConfiguration == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
PamControlledUnit pamControlledUnit;
|
PamControlledUnit pamControlledUnit;
|
||||||
PamControllerView pamControllerView;
|
PamControllerView pamControllerView;
|
||||||
controllerList = new ArrayList<PamControllerView>();
|
controllerList = new ArrayList<PamControllerView>();
|
||||||
for (int iUnit = 0; iUnit < pamController.getNumControlledUnits(); iUnit++) {
|
for (int iUnit = 0; iUnit < pamConfiguration.getNumControlledUnits(); iUnit++) {
|
||||||
pamControlledUnit = pamController.getControlledUnit(iUnit);
|
pamControlledUnit = pamConfiguration.getControlledUnit(iUnit);
|
||||||
if (pamControlledUnit.getNumPamProcesses() == 0
|
if (pamControlledUnit.getNumPamProcesses() == 0
|
||||||
&& pamObjectViewerSettings.showProcesslessModules == false) {
|
&& pamObjectViewerSettings.showProcesslessModules == false) {
|
||||||
continue;
|
continue;
|
||||||
@ -198,25 +213,6 @@ public class PamObjectViewer implements PamViewInterface, ComponentListener,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// private void makeProcesslessModules() {
|
|
||||||
// PamControllerInterface pamController = PamController.getInstance();
|
|
||||||
// PamControlledUnit pamControlledUnit;
|
|
||||||
// PamControllerView pamControllerView;
|
|
||||||
// if (controllerList == null)
|
|
||||||
// controllerList = new ArrayList<PamControllerView>();
|
|
||||||
// for (int iUnit = 0; iUnit < pamController.getNumControlledUnits();
|
|
||||||
// iUnit++) {
|
|
||||||
// pamControlledUnit = pamController.getControlledUnit(iUnit);
|
|
||||||
// if (pamControlledUnit.getNumPamProcesses() > 0) {
|
|
||||||
// continue;
|
|
||||||
// }
|
|
||||||
// pamControllerView = new PamControllerView(pamControlledUnit);
|
|
||||||
// controllerList.add(pamControllerView);
|
|
||||||
// layoutPanel.add(pamControllerView);
|
|
||||||
// pamControllerView.addComponentListener(this);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
private void layoutControllerDiagram() {
|
private void layoutControllerDiagram() {
|
||||||
if (controllerList == null) {
|
if (controllerList == null) {
|
||||||
return;
|
return;
|
||||||
@ -285,11 +281,10 @@ public class PamObjectViewer implements PamViewInterface, ComponentListener,
|
|||||||
int x = xStart;
|
int x = xStart;
|
||||||
int y = yStart;
|
int y = yStart;
|
||||||
|
|
||||||
PamControllerInterface pamController = PamController.getInstance();
|
|
||||||
PamControlledUnit pamControlledUnit;
|
PamControlledUnit pamControlledUnit;
|
||||||
PamProcess pamProcess;
|
PamProcess pamProcess;
|
||||||
for (int iUnit = 0; iUnit < pamController.getNumControlledUnits(); iUnit++) {
|
for (int iUnit = 0; iUnit < pamConfiguration.getNumControlledUnits(); iUnit++) {
|
||||||
pamControlledUnit = pamController.getControlledUnit(iUnit);
|
pamControlledUnit = pamConfiguration.getControlledUnit(iUnit);
|
||||||
for (int iP = 0; iP < pamControlledUnit.getNumPamProcesses(); iP++) {
|
for (int iP = 0; iP < pamControlledUnit.getNumPamProcesses(); iP++) {
|
||||||
pamProcess = pamControlledUnit.getPamProcess(iP);
|
pamProcess = pamControlledUnit.getPamProcess(iP);
|
||||||
pamProcessView = new PamProcessView(pamControlledUnit,
|
pamProcessView = new PamProcessView(pamControlledUnit,
|
||||||
@ -417,7 +412,7 @@ public class PamObjectViewer implements PamViewInterface, ComponentListener,
|
|||||||
|
|
||||||
class ObjectFrame extends JFrame implements ActionListener {
|
class ObjectFrame extends JFrame implements ActionListener {
|
||||||
|
|
||||||
ObjectFrame(JFrame frame) {
|
ObjectFrame(Frame frame) {
|
||||||
setTitle("Pamguard Data Model");
|
setTitle("Pamguard Data Model");
|
||||||
|
|
||||||
// fixed case of Resources 17/8/08 DG.
|
// fixed case of Resources 17/8/08 DG.
|
||||||
@ -599,6 +594,9 @@ public class PamObjectViewer implements PamViewInterface, ComponentListener,
|
|||||||
int bestYGap;
|
int bestYGap;
|
||||||
Rectangle sourceBounds, destBounds;
|
Rectangle sourceBounds, destBounds;
|
||||||
hasInstant = false;
|
hasInstant = false;
|
||||||
|
if (controllerList == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
for (int i = 0; i < controllerList.size(); i++) {
|
for (int i = 0; i < controllerList.size(); i++) {
|
||||||
pamControllerView = controllerList.get(i);
|
pamControllerView = controllerList.get(i);
|
||||||
pamControlledUnit = pamControllerView.pamControlledUnit;
|
pamControlledUnit = pamControllerView.pamControlledUnit;
|
||||||
|
@ -24,7 +24,7 @@ import javax.swing.JFrame;
|
|||||||
|
|
||||||
import PamController.PamControlledUnit;
|
import PamController.PamControlledUnit;
|
||||||
import PamController.PamControllerInterface;
|
import PamController.PamControllerInterface;
|
||||||
import PamModel.PamModelInterface;
|
import PamModel.PamModel;
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -36,7 +36,7 @@ abstract public class PamView implements PamViewInterface {
|
|||||||
|
|
||||||
protected PamControllerInterface pamControllerInterface;
|
protected PamControllerInterface pamControllerInterface;
|
||||||
|
|
||||||
protected PamModelInterface pamModelInterface;
|
protected PamModel pamModelInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Frame for main window associated with this view (i.e a PamGUI).
|
* Frame for main window associated with this view (i.e a PamGUI).
|
||||||
@ -47,7 +47,7 @@ abstract public class PamView implements PamViewInterface {
|
|||||||
|
|
||||||
|
|
||||||
public PamView(PamControllerInterface pamControllerInterface,
|
public PamView(PamControllerInterface pamControllerInterface,
|
||||||
PamModelInterface pamModelInterface, int frameNumber) {
|
PamModel pamModelInterface, int frameNumber) {
|
||||||
this.pamControllerInterface = pamControllerInterface;
|
this.pamControllerInterface = pamControllerInterface;
|
||||||
this.pamModelInterface = pamModelInterface;
|
this.pamModelInterface = pamModelInterface;
|
||||||
this.frameNumber = frameNumber;
|
this.frameNumber = frameNumber;
|
||||||
|
@ -11,6 +11,7 @@ import javax.swing.JComponent;
|
|||||||
import javax.swing.JMenuItem;
|
import javax.swing.JMenuItem;
|
||||||
import javax.swing.JPopupMenu;
|
import javax.swing.JPopupMenu;
|
||||||
import javax.swing.JScrollPane;
|
import javax.swing.JScrollPane;
|
||||||
|
import javax.swing.JTable;
|
||||||
import javax.swing.ListSelectionModel;
|
import javax.swing.ListSelectionModel;
|
||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
import javax.swing.table.AbstractTableModel;
|
import javax.swing.table.AbstractTableModel;
|
||||||
@ -128,6 +129,14 @@ public abstract class DataBlockTableView<T extends PamDataUnit> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get table. Allows adding of more menu handlers, etc.
|
||||||
|
* @return the table object.
|
||||||
|
*/
|
||||||
|
public JTable getTable() {
|
||||||
|
return testTable;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set allowing of multiple row selection.
|
* Set allowing of multiple row selection.
|
||||||
* @param allow
|
* @param allow
|
||||||
@ -228,7 +237,7 @@ public abstract class DataBlockTableView<T extends PamDataUnit> {
|
|||||||
* @param tableRow
|
* @param tableRow
|
||||||
* @return data unit for the table row.
|
* @return data unit for the table row.
|
||||||
*/
|
*/
|
||||||
private final T getDataUnit(int tableRow) {
|
protected final T getDataUnit(int tableRow) {
|
||||||
synchronized (copySynch) {
|
synchronized (copySynch) {
|
||||||
int rowIndex = getDataIndexForRow(tableRow);
|
int rowIndex = getDataIndexForRow(tableRow);
|
||||||
if (rowIndex < 0) return null;
|
if (rowIndex < 0) return null;
|
||||||
@ -377,7 +386,7 @@ public abstract class DataBlockTableView<T extends PamDataUnit> {
|
|||||||
* so consider changing the row selection
|
* so consider changing the row selection
|
||||||
* @param e
|
* @param e
|
||||||
*/
|
*/
|
||||||
private void checkRowSelection(MouseEvent e) {
|
protected void checkRowSelection(MouseEvent e) {
|
||||||
int tableRow = testTable.rowAtPoint(e.getPoint());
|
int tableRow = testTable.rowAtPoint(e.getPoint());
|
||||||
int currentRow = testTable.getSelectedRow();
|
int currentRow = testTable.getSelectedRow();
|
||||||
if (tableRow != currentRow) {
|
if (tableRow != currentRow) {
|
||||||
@ -389,6 +398,16 @@ public abstract class DataBlockTableView<T extends PamDataUnit> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Put the getColumnName function out here, so that subclasses can
|
||||||
|
* more easily override it than if it's buried in the table model
|
||||||
|
* @param column
|
||||||
|
* @return colum name
|
||||||
|
*/
|
||||||
|
public String getColumnName(int column) {
|
||||||
|
return getColumnNames()[column];
|
||||||
|
}
|
||||||
|
|
||||||
private class ViewScrollObserver implements PamScrollObserver {
|
private class ViewScrollObserver implements PamScrollObserver {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -448,7 +467,7 @@ public abstract class DataBlockTableView<T extends PamDataUnit> {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String getColumnName(int column) {
|
public String getColumnName(int column) {
|
||||||
return getColumnNames()[column];
|
return DataBlockTableView.this.getColumnName(column);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
@ -154,9 +154,13 @@ public class GroupedSourcePanel extends SourcePanel {
|
|||||||
|
|
||||||
public void setChannelGroups(int[] channelGroups) {
|
public void setChannelGroups(int[] channelGroups) {
|
||||||
if (channelGroups == null) return;
|
if (channelGroups == null) return;
|
||||||
for (int i = 0; i < Math.min(channelGroups.length, PamConstants.MAX_CHANNELS); i++) {
|
for (int i = 0; i < Math.min(channelGroups.length, PamConstants.MAX_CHANNELS); i++) { try {
|
||||||
groupList[i].setSelectedIndex(channelGroups[i]);
|
groupList[i].setSelectedIndex(channelGroups[i]);
|
||||||
}
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void addComponent(JPanel panel, Component p, GridBagConstraints constraints){
|
public static void addComponent(JPanel panel, Component p, GridBagConstraints constraints){
|
||||||
|
@ -343,7 +343,7 @@ public class RecorderTabPanel implements PamTabPanel, RecorderView {
|
|||||||
class SettingsButtonListener implements ActionListener {
|
class SettingsButtonListener implements ActionListener {
|
||||||
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
recorderControl.recordSettingsDialog(recorderControl.getPamView().getGuiFrame());
|
recorderControl.recordSettingsDialog(recorderControl.getGuiFrame());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -107,6 +107,7 @@ import PamView.GeneralProjector;
|
|||||||
import PamView.ColourArray.ColourArrayType;
|
import PamView.ColourArray.ColourArrayType;
|
||||||
import PamView.dialog.PamLabel;
|
import PamView.dialog.PamLabel;
|
||||||
import PamView.PamColors;
|
import PamView.PamColors;
|
||||||
|
import PamView.PamView;
|
||||||
import PamView.hidingpanel.HidingDialogPanel;
|
import PamView.hidingpanel.HidingDialogPanel;
|
||||||
import PamView.panel.CornerLayout;
|
import PamView.panel.CornerLayout;
|
||||||
import PamView.panel.CornerLayoutContraint;
|
import PamView.panel.CornerLayoutContraint;
|
||||||
@ -275,11 +276,13 @@ InternalFrameListener, DisplayPanelContainer, SpectrogramParametersUser, PamSett
|
|||||||
// }
|
// }
|
||||||
if (spectrogramParameters == null) {
|
if (spectrogramParameters == null) {
|
||||||
this.spectrogramParameters = new SpectrogramParameters();
|
this.spectrogramParameters = new SpectrogramParameters();
|
||||||
// setSettings(); // force up the dialog.
|
PamView view = userDisplayControl.getPamView();
|
||||||
SpectrogramParameters newParams = SpectrogramParamsDialog
|
if (view != null) {
|
||||||
.showDialog(userDisplayControl.getPamView().getGuiFrame(), spectrogramPanels, spectrogramParameters);
|
SpectrogramParameters newParams = SpectrogramParamsDialog
|
||||||
if (newParams != null) {
|
.showDialog(userDisplayControl.getGuiFrame(), spectrogramPanels, spectrogramParameters);
|
||||||
this.spectrogramParameters = newParams;
|
if (newParams != null) {
|
||||||
|
this.spectrogramParameters = newParams;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1184,7 +1187,7 @@ InternalFrameListener, DisplayPanelContainer, SpectrogramParametersUser, PamSett
|
|||||||
// SpectrogramParameters newParams = SpectrogramParamsDialog
|
// SpectrogramParameters newParams = SpectrogramParamsDialog
|
||||||
// .showDialog(userDisplayControl.getPamView().getGuiFrame(), this.getOverlayMarker(), spectrogramParameters);
|
// .showDialog(userDisplayControl.getPamView().getGuiFrame(), this.getOverlayMarker(), spectrogramParameters);
|
||||||
SpectrogramParameters newParams = SpectrogramParamsDialog
|
SpectrogramParameters newParams = SpectrogramParamsDialog
|
||||||
.showDialog(userDisplayControl.getPamView().getGuiFrame(), spectrogramPanels, spectrogramParameters);
|
.showDialog(userDisplayControl.getGuiFrame(), spectrogramPanels, spectrogramParameters);
|
||||||
|
|
||||||
|
|
||||||
if (newParams == null) return;
|
if (newParams == null) return;
|
||||||
|
@ -62,7 +62,7 @@ public class AlarmOfflineTask extends OfflineTask<PamDataUnit> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean callSettings() {
|
public boolean callSettings() {
|
||||||
Frame frame = alarmControl.getPamView().getGuiFrame();
|
Frame frame = alarmControl.getGuiFrame();
|
||||||
boolean ok = alarmControl.showAlarmDialog(frame);
|
boolean ok = alarmControl.showAlarmDialog(frame);
|
||||||
if (ok) {
|
if (ok) {
|
||||||
setParentDataBlock(alarmProcess.getSourceDataBlock());
|
setParentDataBlock(alarmProcess.getSourceDataBlock());
|
||||||
|
@ -22,7 +22,7 @@ public class AutecPhonesControl extends PamControlledUnit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Frame getGuiFrame() {
|
public Frame getGuiFrame() {
|
||||||
return super.getPamView().getGuiFrame();
|
return super.getGuiFrame();
|
||||||
}
|
}
|
||||||
class AutecProcess extends PamProcess {
|
class AutecProcess extends PamProcess {
|
||||||
|
|
||||||
|
@ -923,7 +923,7 @@ PamSettingsSource, DataOutputStore {
|
|||||||
protected void process(List<BinaryMapMakeProgress> chunks) {
|
protected void process(List<BinaryMapMakeProgress> chunks) {
|
||||||
if (PamGUIManager.isSwing()) {
|
if (PamGUIManager.isSwing()) {
|
||||||
if (binaryMapDialog == null) {
|
if (binaryMapDialog == null) {
|
||||||
binaryMapDialog = BinaryMapMakingDialog.showDialog(getPamView().getGuiFrame());
|
binaryMapDialog = BinaryMapMakingDialog.showDialog(PamController.getMainFrame());
|
||||||
}
|
}
|
||||||
super.process(chunks);
|
super.process(chunks);
|
||||||
for (int i = 0; i < chunks.size(); i++) {
|
for (int i = 0; i < chunks.size(); i++) {
|
||||||
@ -2370,7 +2370,7 @@ PamSettingsSource, DataOutputStore {
|
|||||||
* Get the unit type for the binary store.
|
* Get the unit type for the binary store.
|
||||||
* @return the binary store unit type.
|
* @return the binary store unit type.
|
||||||
*/
|
*/
|
||||||
private static String getBinaryUnitType() {
|
public static String getBinaryUnitType() {
|
||||||
return defUnitType;
|
return defUnitType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2771,7 +2771,7 @@ public class ClickBTDisplay extends ClickDisplay implements PamObserver, PamSett
|
|||||||
|
|
||||||
BTDisplayParameters newParameters =
|
BTDisplayParameters newParameters =
|
||||||
ClickDisplayDialog.showDialog(clickControl,
|
ClickDisplayDialog.showDialog(clickControl,
|
||||||
clickControl.getPamView().getGuiFrame(), btDisplayParameters);
|
clickControl.getGuiFrame(), btDisplayParameters);
|
||||||
if (newParameters != null){
|
if (newParameters != null){
|
||||||
btDisplayParameters = newParameters.clone();
|
btDisplayParameters = newParameters.clone();
|
||||||
if (getVScaleManager() != null) {
|
if (getVScaleManager() != null) {
|
||||||
|
@ -44,6 +44,7 @@ import binaryFileStorage.BinaryStore;
|
|||||||
import Filters.FilterDialog;
|
import Filters.FilterDialog;
|
||||||
import Filters.FilterParams;
|
import Filters.FilterParams;
|
||||||
import Localiser.detectionGroupLocaliser.GroupDetection;
|
import Localiser.detectionGroupLocaliser.GroupDetection;
|
||||||
|
import PamController.PamConfiguration;
|
||||||
import PamController.PamControlledUnit;
|
import PamController.PamControlledUnit;
|
||||||
import PamController.PamControlledUnitGUI;
|
import PamController.PamControlledUnitGUI;
|
||||||
import PamController.PamControlledUnitSettings;
|
import PamController.PamControlledUnitSettings;
|
||||||
@ -97,6 +98,7 @@ import dataPlotsFX.data.TDDataProviderRegisterFX;
|
|||||||
import detectionPlotFX.data.DDPlotRegister;
|
import detectionPlotFX.data.DDPlotRegister;
|
||||||
import detectionPlotFX.rawDDPlot.ClickDDPlotProvider;
|
import detectionPlotFX.rawDDPlot.ClickDDPlotProvider;
|
||||||
import fftManager.fftorganiser.FFTDataOrganiser;
|
import fftManager.fftorganiser.FFTDataOrganiser;
|
||||||
|
import offlineProcessing.OfflineTaskGroup;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Main Controller for click detection.
|
* Main Controller for click detection.
|
||||||
@ -207,9 +209,22 @@ public class ClickControl extends PamControlledUnit implements PamSettings {
|
|||||||
|
|
||||||
public static final String UNITTYPE = "Click Detector";
|
public static final String UNITTYPE = "Click Detector";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Old style constructor which only gets a name
|
||||||
|
* @param name
|
||||||
|
*/
|
||||||
public ClickControl(String name) {
|
public ClickControl(String name) {
|
||||||
|
this(null, name);
|
||||||
|
}
|
||||||
|
|
||||||
super(UNITTYPE, name);
|
/**
|
||||||
|
* New style constructor which get a configuraiton and a name.
|
||||||
|
* @param pamConfiguration
|
||||||
|
* @param name
|
||||||
|
*/
|
||||||
|
public ClickControl(PamConfiguration pamConfiguration, String name) {
|
||||||
|
|
||||||
|
super(pamConfiguration, UNITTYPE, name);
|
||||||
|
|
||||||
sortDataBlockPrefix();
|
sortDataBlockPrefix();
|
||||||
|
|
||||||
@ -220,7 +235,6 @@ public class ClickControl extends PamControlledUnit implements PamSettings {
|
|||||||
// }
|
// }
|
||||||
clickControl = this;
|
clickControl = this;
|
||||||
|
|
||||||
|
|
||||||
angleVetoes = new AngleVetoes(this);
|
angleVetoes = new AngleVetoes(this);
|
||||||
|
|
||||||
offlineToolbar = new OfflineToolbar(this);
|
offlineToolbar = new OfflineToolbar(this);
|
||||||
@ -288,6 +302,9 @@ public class ClickControl extends PamControlledUnit implements PamSettings {
|
|||||||
roccaControl = (RoccaControl) PamController.getInstance().findControlledUnit(RoccaControl.unitType);
|
roccaControl = (RoccaControl) PamController.getInstance().findControlledUnit(RoccaControl.unitType);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
ClicksOffline.getOfflineTaskGroup(this);
|
||||||
|
}
|
||||||
|
|
||||||
if (PamGUIManager.isSwing()) {
|
if (PamGUIManager.isSwing()) {
|
||||||
|
|
||||||
@ -988,6 +1005,19 @@ public class ClickControl extends PamControlledUnit implements PamSettings {
|
|||||||
return clicksOffline;
|
return clicksOffline;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * @return the number of offlineTaskGroups
|
||||||
|
// */
|
||||||
|
// public int getNumOfflineTaskGroups() {
|
||||||
|
// return 1;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * @return the iTH offlineTaskGroup
|
||||||
|
// */
|
||||||
|
// public OfflineTaskGroup getOfflineTaskGroup(int i) {
|
||||||
|
// return offlineTaskGroups.get(i);
|
||||||
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the latestOfflineEvent
|
* @return the latestOfflineEvent
|
||||||
@ -1187,7 +1217,8 @@ public class ClickControl extends PamControlledUnit implements PamSettings {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public PamRawDataBlock findRawDataBlock() {
|
public PamRawDataBlock findRawDataBlock() {
|
||||||
return (PamController.getInstance().getRawDataBlock(clickParameters.getRawDataSource()));
|
return getPamConfiguration().getRawDataBlock(clickParameters.getRawDataSource());
|
||||||
|
// return (PamController.getInstance().getRawDataBlock(clickParameters.getRawDataSource()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -403,7 +403,7 @@ public class ClickDetector extends PamProcess {
|
|||||||
// try to connect automatically to the acquisition module ...
|
// try to connect automatically to the acquisition module ...
|
||||||
// ArrayList<PamDataBlock> rawBlocks =
|
// ArrayList<PamDataBlock> rawBlocks =
|
||||||
// PamController.getInstance().getDataBlocks(RawDataUnit.class, false);
|
// PamController.getInstance().getDataBlocks(RawDataUnit.class, false);
|
||||||
AcquisitionControl daq = (AcquisitionControl) PamController.getInstance()
|
AcquisitionControl daq = (AcquisitionControl) clickControl.getPamConfiguration()
|
||||||
.findControlledUnit(AcquisitionControl.unitType);
|
.findControlledUnit(AcquisitionControl.unitType);
|
||||||
if (daq != null) {
|
if (daq != null) {
|
||||||
rawDataSource = daq.getRawDataBlock();
|
rawDataSource = daq.getRawDataBlock();
|
||||||
|
@ -841,7 +841,7 @@ public class ClickSpectrum extends ClickDisplay implements PamObserver , PamSett
|
|||||||
pt.x += 10;
|
pt.x += 10;
|
||||||
pt.y += 20;
|
pt.y += 20;
|
||||||
ClickSpectrumParams newParams = ClickSpectrumDialog.showDialog(
|
ClickSpectrumParams newParams = ClickSpectrumDialog.showDialog(
|
||||||
clickControl.getPamView().getGuiFrame(), pt, this, clickSpectrumParams);
|
clickControl.getGuiFrame(), pt, this, clickSpectrumParams);
|
||||||
if (newParams != null) {
|
if (newParams != null) {
|
||||||
if (newParams.plotCepstrum) {
|
if (newParams.plotCepstrum) {
|
||||||
newParams.logScale = false;
|
newParams.logScale = false;
|
||||||
@ -859,7 +859,7 @@ public class ClickSpectrum extends ClickDisplay implements PamObserver , PamSett
|
|||||||
pt.x += 10;
|
pt.x += 10;
|
||||||
pt.y += 20;
|
pt.y += 20;
|
||||||
ClickSpectrumTemplateParams newTempParams = ClickSpectrumTemplateEditDialog.showDialog(
|
ClickSpectrumTemplateParams newTempParams = ClickSpectrumTemplateEditDialog.showDialog(
|
||||||
clickControl.getPamView().getGuiFrame(), pt, this, clickTemplateParams,clickControl);
|
clickControl.getGuiFrame(), pt, this, clickTemplateParams,clickControl);
|
||||||
if (newTempParams!=null){
|
if (newTempParams!=null){
|
||||||
clickTemplateParams = newTempParams.clone();
|
clickTemplateParams = newTempParams.clone();
|
||||||
sortWestAxis();
|
sortWestAxis();
|
||||||
@ -873,7 +873,7 @@ public class ClickSpectrum extends ClickDisplay implements PamObserver , PamSett
|
|||||||
pt.x += 10;
|
pt.x += 10;
|
||||||
pt.y += 20;
|
pt.y += 20;
|
||||||
ClickSpectrumTemplateParams newTempParams = ClickSpectrumTemplateDialog.showDialog(
|
ClickSpectrumTemplateParams newTempParams = ClickSpectrumTemplateDialog.showDialog(
|
||||||
clickControl.getPamView().getGuiFrame(), pt, this, clickTemplateParams);
|
clickControl.getGuiFrame(), pt, this, clickTemplateParams);
|
||||||
if (newTempParams!=null){
|
if (newTempParams!=null){
|
||||||
clickTemplateParams = newTempParams.clone();
|
clickTemplateParams = newTempParams.clone();
|
||||||
sortWestAxis();
|
sortWestAxis();
|
||||||
|
@ -765,7 +765,7 @@ public class ClickWaveform extends ClickDisplay implements PamObserver {
|
|||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent arg0) {
|
public void actionPerformed(ActionEvent arg0) {
|
||||||
|
|
||||||
ClickParameters newParams = WaveDisplayDialog.showDialog(clickControl.getPamView().getGuiFrame(),
|
ClickParameters newParams = WaveDisplayDialog.showDialog(clickControl.getGuiFrame(),
|
||||||
clickWaveform, clickControl.clickParameters);
|
clickWaveform, clickControl.clickParameters);
|
||||||
if (newParams != null) {
|
if (newParams != null) {
|
||||||
clickControl.clickParameters = newParams.clone();
|
clickControl.clickParameters = newParams.clone();
|
||||||
|
@ -975,7 +975,7 @@ public class IDI_Display extends ClickDisplay implements PamObserver, PamSetting
|
|||||||
pt.y -= 10;
|
pt.y -= 10;
|
||||||
pt.x += 10;
|
pt.x += 10;
|
||||||
IDI_DisplayParams newParams = IDI_DisplayDialog.showDialog(
|
IDI_DisplayParams newParams = IDI_DisplayDialog.showDialog(
|
||||||
clickControl.getPamView().getGuiFrame(), pt, idiParams);
|
clickControl.getGuiFrame(), pt, idiParams);
|
||||||
if (newParams != null) {
|
if (newParams != null) {
|
||||||
idiParams = newParams.clone();
|
idiParams = newParams.clone();
|
||||||
setParameters();
|
setParameters();
|
||||||
|
@ -248,7 +248,7 @@ public class WignerPlot extends ClickDisplay implements PamSettings {
|
|||||||
pt.y -= 10;
|
pt.y -= 10;
|
||||||
pt.x += 10;
|
pt.x += 10;
|
||||||
WignerPlotOptions newoptions = WignerPlotdialog.showDialog(
|
WignerPlotOptions newoptions = WignerPlotdialog.showDialog(
|
||||||
clickControl.getPamView().getGuiFrame(), pt, wignerPlotOptions);
|
clickControl.getGuiFrame(), pt, wignerPlotOptions);
|
||||||
if (newoptions != null) {
|
if (newoptions != null) {
|
||||||
wignerPlotOptions = newoptions.clone();
|
wignerPlotOptions = newoptions.clone();
|
||||||
clickedOnClick(lastClick);
|
clickedOnClick(lastClick);
|
||||||
|
@ -123,7 +123,7 @@ public class ClickDelayTask extends OfflineTask<ClickDetection> {
|
|||||||
// clickControl.getClickParameters().setDelayMeasurementParams(0, newParams.clone());
|
// clickControl.getClickParameters().setDelayMeasurementParams(0, newParams.clone());
|
||||||
// return true;
|
// return true;
|
||||||
// }
|
// }
|
||||||
ClickParameters newParams = ClickDelayDialog.showDialog(clickControl.getPamView().getGuiFrame(), clickControl);
|
ClickParameters newParams = ClickDelayDialog.showDialog(clickControl.getGuiFrame(), clickControl);
|
||||||
if (newParams != null) {
|
if (newParams != null) {
|
||||||
clickControl.setClickParameters(newParams);
|
clickControl.setClickParameters(newParams);
|
||||||
return true;
|
return true;
|
||||||
|
@ -75,7 +75,7 @@ public class ClickReClassifyTask extends OfflineTask<ClickDetection> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean callSettings() {
|
public boolean callSettings() {
|
||||||
return clickControl.classificationDialog(clickControl.getPamView().getGuiFrame());
|
return clickControl.classificationDialog(clickControl.getGuiFrame());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -62,8 +62,6 @@ public class ClicksOffline {
|
|||||||
|
|
||||||
private OLProcessDialog clickOfflineDialog;
|
private OLProcessDialog clickOfflineDialog;
|
||||||
|
|
||||||
private OfflineTaskGroup offlineTaskGroup;
|
|
||||||
|
|
||||||
public static final String ClickTypeLookupName = "OfflineRCEvents";
|
public static final String ClickTypeLookupName = "OfflineRCEvents";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -545,8 +543,8 @@ public class ClicksOffline {
|
|||||||
*/
|
*/
|
||||||
public void reAnalyseClicks() {
|
public void reAnalyseClicks() {
|
||||||
if (clickOfflineDialog == null) {
|
if (clickOfflineDialog == null) {
|
||||||
clickOfflineDialog = new OLProcessDialog(clickControl.getPamView().getGuiFrame(),
|
clickOfflineDialog = new OLProcessDialog(clickControl.getGuiFrame(),
|
||||||
getOfflineTaskGroup(), "Click Reprocessing");
|
getOfflineTaskGroup(clickControl), "Click Reprocessing");
|
||||||
}
|
}
|
||||||
clickOfflineDialog.setVisible(true);
|
clickOfflineDialog.setVisible(true);
|
||||||
}
|
}
|
||||||
@ -576,8 +574,9 @@ public class ClicksOffline {
|
|||||||
* Get / Create an offline task group for click re-processing.
|
* Get / Create an offline task group for click re-processing.
|
||||||
* @return offline task group. Create if necessary
|
* @return offline task group. Create if necessary
|
||||||
*/
|
*/
|
||||||
private OfflineTaskGroup getOfflineTaskGroup() {
|
public static OfflineTaskGroup getOfflineTaskGroup(ClickControl clickControl) {
|
||||||
offlineTaskGroup = new OfflineTaskGroup(clickControl, "Click Reprocessing");
|
|
||||||
|
OfflineTaskGroup offlineTaskGroup = new OfflineTaskGroup(clickControl, "Click Reprocessing");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* These tasks are not registered - gets too complicated since some of them
|
* These tasks are not registered - gets too complicated since some of them
|
||||||
@ -607,7 +606,7 @@ public class ClicksOffline {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void labelClicks(OverlayMark overlayMark, List<PamDataUnit> dataList) {
|
public void labelClicks(OverlayMark overlayMark, List<PamDataUnit> dataList) {
|
||||||
Window win = clickControl.getPamView().getGuiFrame();
|
Window win = clickControl.getGuiFrame();
|
||||||
OfflineEventDataUnit event = LabelClicksDialog.showDialog(win, clickControl, overlayMark, dataList);
|
OfflineEventDataUnit event = LabelClicksDialog.showDialog(win, clickControl, overlayMark, dataList);
|
||||||
if (event != null) {
|
if (event != null) {
|
||||||
notifyEventChanges(event);
|
notifyEventChanges(event);
|
||||||
@ -625,7 +624,7 @@ public class ClicksOffline {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void newEvent(OverlayMark overlayMark, List<PamDataUnit> markedClicks) {
|
public void newEvent(OverlayMark overlayMark, List<PamDataUnit> markedClicks) {
|
||||||
Window win = clickControl.getPamView().getGuiFrame();
|
Window win = clickControl.getGuiFrame();
|
||||||
OfflineEventDataBlock offlineEventDataBlock = clickControl.getClickDetector().getOfflineEventDataBlock();
|
OfflineEventDataBlock offlineEventDataBlock = clickControl.getClickDetector().getOfflineEventDataBlock();
|
||||||
if (markedClicks == null) {
|
if (markedClicks == null) {
|
||||||
return;
|
return;
|
||||||
@ -692,7 +691,7 @@ public class ClicksOffline {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void labelClick(OverlayMark overlayMark, PamDataUnit singleClick) {
|
public void labelClick(OverlayMark overlayMark, PamDataUnit singleClick) {
|
||||||
Window win = clickControl.getPamView().getGuiFrame();
|
Window win = clickControl.getGuiFrame();
|
||||||
OfflineEventDataUnit event = LabelClicksDialog.showDialog(win, clickControl, overlayMark, singleClick);
|
OfflineEventDataUnit event = LabelClicksDialog.showDialog(win, clickControl, overlayMark, singleClick);
|
||||||
if (event != null) {
|
if (event != null) {
|
||||||
notifyEventChanges(event);
|
notifyEventChanges(event);
|
||||||
|
@ -90,7 +90,7 @@ public class EchoDetectionTask extends OfflineTask<ClickDetection> {
|
|||||||
if (echoDetectionSystem == null) {
|
if (echoDetectionSystem == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return EchoDialog.showDialog(clickControl.getPamView().getGuiFrame(), echoDetectionSystem);
|
return EchoDialog.showDialog(clickControl.getGuiFrame(), echoDetectionSystem);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
@ -84,7 +84,7 @@ public class ClickTrainOfflineProcess {
|
|||||||
|
|
||||||
//if null open the dialog- also create a new offlineTask group if the datablock has changed.
|
//if null open the dialog- also create a new offlineTask group if the datablock has changed.
|
||||||
if (clickTrainDialog == null) {
|
if (clickTrainDialog == null) {
|
||||||
clickTrainDialog = new CTProcessDialog(this.clickTrainControl.getPamView().getGuiFrame(),
|
clickTrainDialog = new CTProcessDialog(this.clickTrainControl.getGuiFrame(),
|
||||||
clickTrainOfflineGroup, "Click Train Detection");
|
clickTrainOfflineGroup, "Click Train Detection");
|
||||||
//batchLocaliseDialog.setModalityType(Dialog.ModalityType.MODELESS);
|
//batchLocaliseDialog.setModalityType(Dialog.ModalityType.MODELESS);
|
||||||
}
|
}
|
||||||
|
@ -122,7 +122,7 @@ public class DbHtControl extends PamControlledUnit implements PamSettings {
|
|||||||
offlineTaskGroup.addTask(task);
|
offlineTaskGroup.addTask(task);
|
||||||
}
|
}
|
||||||
if (olProcessDialog == null) {
|
if (olProcessDialog == null) {
|
||||||
olProcessDialog = new OLProcessDialog(getPamView().getGuiFrame(), offlineTaskGroup, "dBHt Data Export");
|
olProcessDialog = new OLProcessDialog(getGuiFrame(), offlineTaskGroup, "dBHt Data Export");
|
||||||
}
|
}
|
||||||
olProcessDialog.setVisible(true);
|
olProcessDialog.setVisible(true);
|
||||||
}
|
}
|
||||||
|
@ -455,7 +455,7 @@ public class DifarControl extends PamControlledUnit implements PamSettings {
|
|||||||
// offlineTaskGroup.addTask(task);
|
// offlineTaskGroup.addTask(task);
|
||||||
}
|
}
|
||||||
OLProcessDialog olProcessDialog;
|
OLProcessDialog olProcessDialog;
|
||||||
olProcessDialog = new OLProcessDialog(getPamView().getGuiFrame(), offlineTaskGroup, "DIFAR Data Export");
|
olProcessDialog = new OLProcessDialog(getGuiFrame(), offlineTaskGroup, "DIFAR Data Export");
|
||||||
olProcessDialog.setVisible(true);
|
olProcessDialog.setVisible(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,6 +37,7 @@ import fftManager.layoutFX.FFTGuiFX;
|
|||||||
//import fftManager.layoutFX.FFTGuiFX;
|
//import fftManager.layoutFX.FFTGuiFX;
|
||||||
import fftManager.newSpectrogram.SpectrogramPlotProvider;
|
import fftManager.newSpectrogram.SpectrogramPlotProvider;
|
||||||
import spectrogramNoiseReduction.SpectrogramNoiseProcess;
|
import spectrogramNoiseReduction.SpectrogramNoiseProcess;
|
||||||
|
import PamController.PamConfiguration;
|
||||||
import PamController.PamControlledUnit;
|
import PamController.PamControlledUnit;
|
||||||
import PamController.PamControlledUnitGUI;
|
import PamController.PamControlledUnitGUI;
|
||||||
import PamController.PamControlledUnitSettings;
|
import PamController.PamControlledUnitSettings;
|
||||||
@ -70,7 +71,11 @@ public class PamFFTControl extends PamControlledUnit implements PamSettings {
|
|||||||
private PamControlledGUISwing fftGUISwing;
|
private PamControlledGUISwing fftGUISwing;
|
||||||
|
|
||||||
public PamFFTControl(String unitName) {
|
public PamFFTControl(String unitName) {
|
||||||
super("FFT Engine", unitName);
|
this(null, unitName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PamFFTControl(PamConfiguration pamConfiguration, String unitName) {
|
||||||
|
super(pamConfiguration, "FFT Engine", unitName);
|
||||||
|
|
||||||
PamRawDataBlock rawDataBlock = PamController.getInstance().
|
PamRawDataBlock rawDataBlock = PamController.getInstance().
|
||||||
getRawDataBlock(fftParameters.dataSource);
|
getRawDataBlock(fftParameters.dataSource);
|
||||||
|
@ -144,10 +144,10 @@ public class PamFFTProcess extends PamProcess {
|
|||||||
* name has not been set, so if there isn't a name, use the number !
|
* name has not been set, so if there isn't a name, use the number !
|
||||||
*/
|
*/
|
||||||
if (fftParameters.dataSourceName != null) {
|
if (fftParameters.dataSourceName != null) {
|
||||||
rawDataBlock = (PamRawDataBlock) PamController.getInstance().getDataBlock(RawDataUnit.class, fftParameters.dataSourceName);
|
rawDataBlock = (PamRawDataBlock) fftControl.getPamConfiguration().getDataBlock(RawDataUnit.class, fftParameters.dataSourceName);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
rawDataBlock = PamController.getInstance().getRawDataBlock(fftParameters.dataSource);
|
rawDataBlock = fftControl.getPamConfiguration().getRawDataBlock(fftParameters.dataSource);
|
||||||
if (rawDataBlock != null) {
|
if (rawDataBlock != null) {
|
||||||
fftParameters.dataSourceName = rawDataBlock.getDataName();
|
fftParameters.dataSourceName = rawDataBlock.getDataName();
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,7 @@ import offlineProcessing.OLProcessDialog;
|
|||||||
import offlineProcessing.OfflineTaskGroup;
|
import offlineProcessing.OfflineTaskGroup;
|
||||||
import warnings.PamWarning;
|
import warnings.PamWarning;
|
||||||
import warnings.WarningSystem;
|
import warnings.WarningSystem;
|
||||||
|
import PamController.PamConfiguration;
|
||||||
import PamController.PamControlledUnit;
|
import PamController.PamControlledUnit;
|
||||||
import PamController.PamControlledUnitGUI;
|
import PamController.PamControlledUnitGUI;
|
||||||
import PamController.PamControlledUnitSettings;
|
import PamController.PamControlledUnitSettings;
|
||||||
@ -109,8 +110,8 @@ PamSettingsSource {
|
|||||||
|
|
||||||
private int lastErrorCount;
|
private int lastErrorCount;
|
||||||
|
|
||||||
public DBControl(String unitName, int settingsStore, boolean openImmediately) {
|
public DBControl(PamConfiguration pamconfiguration, String unitName, int settingsStore, boolean openImmediately) {
|
||||||
super(dbUnitType, unitName);
|
super(pamconfiguration, dbUnitType, unitName);
|
||||||
THIS = this;
|
THIS = this;
|
||||||
|
|
||||||
databaseWarning = new PamWarning(getUnitName(), "Database error", 2);
|
databaseWarning = new PamWarning(getUnitName(), "Database error", 2);
|
||||||
@ -157,6 +158,9 @@ PamSettingsSource {
|
|||||||
|
|
||||||
// selectDatabase(null);
|
// selectDatabase(null);
|
||||||
|
|
||||||
|
if (isInMainConfiguration() == false) {
|
||||||
|
openImmediately = false;
|
||||||
|
}
|
||||||
if (databaseSystem == null){
|
if (databaseSystem == null){
|
||||||
selectSystem(dbParameters.getDatabaseSystem(), openImmediately);
|
selectSystem(dbParameters.getDatabaseSystem(), openImmediately);
|
||||||
}
|
}
|
||||||
@ -529,7 +533,7 @@ PamSettingsSource {
|
|||||||
// offlineTaskGroup.addTask(task);
|
// offlineTaskGroup.addTask(task);
|
||||||
}
|
}
|
||||||
if (olProcessDialog == null) {
|
if (olProcessDialog == null) {
|
||||||
olProcessDialog = new OLProcessDialog(getPamView().getGuiFrame(), offlineTaskGroup,
|
olProcessDialog = new OLProcessDialog(getGuiFrame(), offlineTaskGroup,
|
||||||
dataBlock.getDataName() + " Export");
|
dataBlock.getDataName() + " Export");
|
||||||
}
|
}
|
||||||
olProcessDialog.setVisible(true);
|
olProcessDialog.setVisible(true);
|
||||||
|
@ -18,7 +18,7 @@ public class DBControlSettings extends DBControl {
|
|||||||
|
|
||||||
public DBControlSettings(String unitName) {
|
public DBControlSettings(String unitName) {
|
||||||
|
|
||||||
super(unitName, PamSettingManager.LIST_DATABASESTUFF, false);
|
super(null, unitName, PamSettingManager.LIST_DATABASESTUFF, false);
|
||||||
|
|
||||||
// logSettings = new LogSettings(this);
|
// logSettings = new LogSettings(this);
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@ import pamViewFX.pamTask.PamTaskUpdate;
|
|||||||
import PamController.AWTScheduler;
|
import PamController.AWTScheduler;
|
||||||
import PamController.DataOutputStore;
|
import PamController.DataOutputStore;
|
||||||
import PamController.OfflineDataStore;
|
import PamController.OfflineDataStore;
|
||||||
|
import PamController.PamConfiguration;
|
||||||
import PamController.PamControlledUnit;
|
import PamController.PamControlledUnit;
|
||||||
import PamController.PamController;
|
import PamController.PamController;
|
||||||
import PamController.PamControllerInterface;
|
import PamController.PamControllerInterface;
|
||||||
@ -51,7 +52,10 @@ public class DBControlUnit extends DBControl implements DataOutputStore {
|
|||||||
private BackupInformation backupInformation;
|
private BackupInformation backupInformation;
|
||||||
|
|
||||||
public DBControlUnit(String unitName) {
|
public DBControlUnit(String unitName) {
|
||||||
super(unitName, whichStore(), true);
|
this(null, unitName);
|
||||||
|
}
|
||||||
|
public DBControlUnit(PamConfiguration pamConfiguration, String unitName) {
|
||||||
|
super(pamConfiguration, unitName, whichStore(), true);
|
||||||
THIS = this;
|
THIS = this;
|
||||||
setFullTablesCheck(true);
|
setFullTablesCheck(true);
|
||||||
// int runMode = PamController.getInstance().getRunMode();
|
// int runMode = PamController.getInstance().getRunMode();
|
||||||
|
@ -70,7 +70,7 @@ public class MTOfflineProcess {
|
|||||||
|
|
||||||
//if null open the dialog- also create a new offlineTask group if the datablock has changed.
|
//if null open the dialog- also create a new offlineTask group if the datablock has changed.
|
||||||
if (mtOfflineDialog == null) {
|
if (mtOfflineDialog == null) {
|
||||||
mtOfflineDialog = new OLProcessDialog(this.mtContorl.getPamView().getGuiFrame(),
|
mtOfflineDialog = new OLProcessDialog(this.mtContorl.getGuiFrame(),
|
||||||
mtOfflineGroup, "Match Template Classifier");
|
mtOfflineGroup, "Match Template Classifier");
|
||||||
//batchLocaliseDialog.setModalityType(Dialog.ModalityType.MODELESS);
|
//batchLocaliseDialog.setModalityType(Dialog.ModalityType.MODELESS);
|
||||||
}
|
}
|
||||||
|
@ -62,7 +62,7 @@ public class NoiseBandProcess extends PamProcess {
|
|||||||
|
|
||||||
public void setupProcess() {
|
public void setupProcess() {
|
||||||
super.setupProcess();
|
super.setupProcess();
|
||||||
PamDataBlock sourceData = PamController.getInstance().getDataBlock(RawDataUnit.class, noiseBandControl.noiseBandSettings.rawDataSource);
|
PamDataBlock sourceData = noiseBandControl.getPamConfiguration().getDataBlock(RawDataUnit.class, noiseBandControl.noiseBandSettings.rawDataSource);
|
||||||
if (sourceData == null) {
|
if (sourceData == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -129,7 +129,7 @@ public class NoiseProcess extends PamProcess {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void findDataSource() {
|
private void findDataSource() {
|
||||||
PamDataBlock source = PamController.getInstance().getDataBlock(FFTDataUnit.class,
|
PamDataBlock source = noiseControl.getPamConfiguration().getDataBlock(FFTDataUnit.class,
|
||||||
noiseControl.noiseSettings.dataSource);
|
noiseControl.noiseSettings.dataSource);
|
||||||
daqProcess = null;
|
daqProcess = null;
|
||||||
|
|
||||||
|
@ -1189,7 +1189,7 @@ private void setAxisLabels() {
|
|||||||
if (mouseMenu == null) {
|
if (mouseMenu == null) {
|
||||||
mouseMenu = new JPopupMenu();
|
mouseMenu = new JPopupMenu();
|
||||||
JMenuItem menuItem = new JMenuItem("Display Options ...");
|
JMenuItem menuItem = new JMenuItem("Display Options ...");
|
||||||
menuItem.addActionListener(new DisplayOptions(pamControlledUnit.getPamView().getGuiFrame()));
|
menuItem.addActionListener(new DisplayOptions(pamControlledUnit.getGuiFrame()));
|
||||||
mouseMenu.add(menuItem);
|
mouseMenu.add(menuItem);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -126,7 +126,7 @@ public class OneBandControl extends PamControlledUnit implements PamSettings {
|
|||||||
offlineTaskGroup.addTask(task);
|
offlineTaskGroup.addTask(task);
|
||||||
}
|
}
|
||||||
if (olProcessDialog == null) {
|
if (olProcessDialog == null) {
|
||||||
olProcessDialog = new OLProcessDialog(getPamView().getGuiFrame(), offlineTaskGroup, "Noise Data Export");
|
olProcessDialog = new OLProcessDialog(getGuiFrame(), offlineTaskGroup, "Noise Data Export");
|
||||||
}
|
}
|
||||||
olProcessDialog.setVisible(true);
|
olProcessDialog.setVisible(true);
|
||||||
}
|
}
|
||||||
|
@ -123,7 +123,7 @@ public class RadarDisplay extends UserFramePlots implements PamObserver, PamSett
|
|||||||
if (this.radarParameters == null) {
|
if (this.radarParameters == null) {
|
||||||
this.radarParameters = new RadarParameters();
|
this.radarParameters = new RadarParameters();
|
||||||
RadarParameters newParams = RadarParametersDialog.showDialog(RadarDisplay.this,
|
RadarParameters newParams = RadarParametersDialog.showDialog(RadarDisplay.this,
|
||||||
userDisplayControl.getPamView().getGuiFrame(), this.radarParameters, radarProjector);
|
userDisplayControl.getGuiFrame(), this.radarParameters, radarProjector);
|
||||||
if (newParams != null) {
|
if (newParams != null) {
|
||||||
this.radarParameters = newParams.clone();
|
this.radarParameters = newParams.clone();
|
||||||
}
|
}
|
||||||
@ -697,7 +697,7 @@ public class RadarDisplay extends UserFramePlots implements PamObserver, PamSett
|
|||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
|
||||||
RadarParameters newParams = RadarParametersDialog.showDialog(RadarDisplay.this,
|
RadarParameters newParams = RadarParametersDialog.showDialog(RadarDisplay.this,
|
||||||
userDisplayControl.getPamView().getGuiFrame(), radarParameters, radarProjector);
|
userDisplayControl.getGuiFrame(), radarParameters, radarProjector);
|
||||||
if (newParams != null) {
|
if (newParams != null) {
|
||||||
radarParameters = newParams.clone();
|
radarParameters = newParams.clone();
|
||||||
newSettings();
|
newSettings();
|
||||||
|
@ -56,7 +56,7 @@ public class DLOfflineProcess {
|
|||||||
|
|
||||||
//if null open the dialog- also create a new offlineTask group if the datablock has changed.
|
//if null open the dialog- also create a new offlineTask group if the datablock has changed.
|
||||||
if (mtOfflineDialog == null) {
|
if (mtOfflineDialog == null) {
|
||||||
mtOfflineDialog = new OLProcessDialog(this.dlControl.getPamView().getGuiFrame(),
|
mtOfflineDialog = new OLProcessDialog(this.dlControl.getGuiFrame(),
|
||||||
dlOfflineGroup, "Deep Learning Classifier");
|
dlOfflineGroup, "Deep Learning Classifier");
|
||||||
//batchLocaliseDialog.setModalityType(Dialog.ModalityType.MODELESS);
|
//batchLocaliseDialog.setModalityType(Dialog.ModalityType.MODELESS);
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ import java.awt.event.ActionListener;
|
|||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import javax.swing.JMenuItem;
|
import javax.swing.JMenuItem;
|
||||||
|
|
||||||
|
import PamController.PamConfiguration;
|
||||||
import PamController.PamControlledUnit;
|
import PamController.PamControlledUnit;
|
||||||
import PamController.PamControlledUnitSettings;
|
import PamController.PamControlledUnitSettings;
|
||||||
import PamController.PamControllerInterface;
|
import PamController.PamControllerInterface;
|
||||||
@ -22,7 +23,10 @@ public class SpectrogramNoiseControl extends PamControlledUnit implements PamSet
|
|||||||
protected SpectrogramNoiseProcess spectrogramNoiseProcess;
|
protected SpectrogramNoiseProcess spectrogramNoiseProcess;
|
||||||
|
|
||||||
public SpectrogramNoiseControl(String unitName) {
|
public SpectrogramNoiseControl(String unitName) {
|
||||||
super("Spectrogram Noise Reduction", unitName);
|
this(null, unitName);
|
||||||
|
}
|
||||||
|
public SpectrogramNoiseControl(PamConfiguration pamConfiguration, String unitName) {
|
||||||
|
super(pamConfiguration, "Spectrogram Noise Reduction", unitName);
|
||||||
|
|
||||||
spectrogramNoiseProcess = new SpectrogramNoiseProcess(this);
|
spectrogramNoiseProcess = new SpectrogramNoiseProcess(this);
|
||||||
addPamProcess(spectrogramNoiseProcess);
|
addPamProcess(spectrogramNoiseProcess);
|
||||||
|
@ -15,6 +15,7 @@ import spectrogramNoiseReduction.threshold.ThresholdParams;
|
|||||||
|
|
||||||
import fftManager.FFTDataBlock;
|
import fftManager.FFTDataBlock;
|
||||||
import fftManager.FFTDataUnit;
|
import fftManager.FFTDataUnit;
|
||||||
|
import PamController.PamConfiguration;
|
||||||
import PamController.PamControlledUnit;
|
import PamController.PamControlledUnit;
|
||||||
import PamController.PamController;
|
import PamController.PamController;
|
||||||
import PamUtils.complex.ComplexArray;
|
import PamUtils.complex.ComplexArray;
|
||||||
@ -64,7 +65,11 @@ public class SpectrogramNoiseProcess extends PamProcess {
|
|||||||
@Override
|
@Override
|
||||||
public void setupProcess() {
|
public void setupProcess() {
|
||||||
super.setupProcess();
|
super.setupProcess();
|
||||||
sourceData = (FFTDataBlock) PamController.getInstance().getDataBlock(FFTDataUnit.class,
|
|
||||||
|
PamConfiguration mainConfig = PamController.getInstance().getPamConfiguration();
|
||||||
|
PamConfiguration localConfig = getPamControlledUnit().getPamConfiguration();
|
||||||
|
|
||||||
|
sourceData = (FFTDataBlock) getPamControlledUnit().getPamConfiguration().getDataBlock(FFTDataUnit.class,
|
||||||
getNoiseSettings().dataSource);
|
getNoiseSettings().dataSource);
|
||||||
setParentDataBlock(sourceData);
|
setParentDataBlock(sourceData);
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ public class TargetMotionLocaliser<T extends PamDataUnit> extends AbstractLocali
|
|||||||
|
|
||||||
// public boolean showTMDialog(T dataUnit) {
|
// public boolean showTMDialog(T dataUnit) {
|
||||||
// if (targetMotionMainPanel == null) {
|
// if (targetMotionMainPanel == null) {
|
||||||
////targetMotionDialog = new TargetMotionMainPanel<T>(pamControlledUnit.getPamView().getGuiFrame(), this);
|
////targetMotionDialog = new TargetMotionMainPanel<T>(pamControlledUnit.getGuiFrame(), this);
|
||||||
// }
|
// }
|
||||||
// targetMotionMainPanel.updateCurrentControlPanel();
|
// targetMotionMainPanel.updateCurrentControlPanel();
|
||||||
// return true;
|
// return true;
|
||||||
|
@ -54,7 +54,7 @@ public class TMOfflineFunctions {
|
|||||||
//when we change datablock the taks group is going to stay the same- need to make sure it changes
|
//when we change datablock the taks group is going to stay the same- need to make sure it changes
|
||||||
|
|
||||||
if (batchLocaliseDialog == null || currentDataBlock!=targetMotionControl.getCurrentDataBlock()) {
|
if (batchLocaliseDialog == null || currentDataBlock!=targetMotionControl.getCurrentDataBlock()) {
|
||||||
batchLocaliseDialog = new TMOLProcessDialog(targetMotionControl.getPamView().getGuiFrame(),
|
batchLocaliseDialog = new TMOLProcessDialog(targetMotionControl.getGuiFrame(),
|
||||||
getOfflineTaskGroup(), "Batch Localise");
|
getOfflineTaskGroup(), "Batch Localise");
|
||||||
//batchLocaliseDialog.setModalityType(Dialog.ModalityType.MODELESS);
|
//batchLocaliseDialog.setModalityType(Dialog.ModalityType.MODELESS);
|
||||||
}
|
}
|
||||||
|
@ -153,7 +153,7 @@ public class TargetMotionLocaliser<T extends GroupDetection> extends AbstractLoc
|
|||||||
|
|
||||||
public boolean showTMDialog(T dataUnit) {
|
public boolean showTMDialog(T dataUnit) {
|
||||||
if (targetMotionDialog == null) {
|
if (targetMotionDialog == null) {
|
||||||
targetMotionDialog = new TargetMotionDialog<T>(pamControlledUnit.getPamView().getGuiFrame(), this);
|
targetMotionDialog = new TargetMotionDialog<T>(pamControlledUnit.getGuiFrame(), this);
|
||||||
}
|
}
|
||||||
targetMotionDialog.updateEventList();
|
targetMotionDialog.updateEventList();
|
||||||
targetMotionDialog.setDataUnit(dataUnit);
|
targetMotionDialog.setDataUnit(dataUnit);
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package videoRangePanel;
|
package videoRangePanel;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.awt.Frame;
|
||||||
import java.awt.Point;
|
import java.awt.Point;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
@ -361,9 +362,9 @@ public class VRControl extends PamControlledUnit implements PamSettings {
|
|||||||
* @param frame
|
* @param frame
|
||||||
* @param tab- the tab to open the settings dialog on.
|
* @param tab- the tab to open the settings dialog on.
|
||||||
*/
|
*/
|
||||||
public void settingsButtonAWT(JFrame frame, int tab) {
|
public void settingsButtonAWT(Frame frame, int tab) {
|
||||||
if (frame == null) {
|
if (frame == null) {
|
||||||
frame = getPamView().getGuiFrame();
|
frame = getGuiFrame();
|
||||||
}
|
}
|
||||||
VRParameters newParams = VRParametersDialog.showDialog(frame, this, tab);
|
VRParameters newParams = VRParametersDialog.showDialog(frame, this, tab);
|
||||||
if (newParams != null) {
|
if (newParams != null) {
|
||||||
|
@ -105,7 +105,7 @@ public class TideManager extends DataImport<String> {
|
|||||||
// }
|
// }
|
||||||
// else dir=null;
|
// else dir=null;
|
||||||
//
|
//
|
||||||
// String newFile=PamFileBrowser.fileBrowser(vrControl.getPamView().getGuiFrame(),dir,PamFileBrowser.OPEN_FILE,"txt");
|
// String newFile=PamFileBrowser.fileBrowser(vrControl.getGuiFrame(),dir,PamFileBrowser.OPEN_FILE,"txt");
|
||||||
//
|
//
|
||||||
// return newFile;
|
// return newFile;
|
||||||
// }
|
// }
|
||||||
|
@ -179,7 +179,7 @@ public class VRSidePanel implements PamSidePanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (vrControl.getVRParams().currentImageFile==null) {
|
if (vrControl.getVRParams().currentImageFile==null) {
|
||||||
PamDialog.showWarning(vrControl.getPamView().getGuiFrame(), "No image found", "The folder selected did not contain any compatible images");
|
PamDialog.showWarning(vrControl.getGuiFrame(), "No image found", "The folder selected did not contain any compatible images");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
vrControl.loadFile(vrControl.getVRParams().currentImageFile);
|
vrControl.loadFile(vrControl.getVRParams().currentImageFile);
|
||||||
|
@ -221,7 +221,7 @@ public class VRDisplayFX extends PamBorderPane implements VRPane {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (vrControl.getVRParams().currentImageFile==null) {
|
if (vrControl.getVRParams().currentImageFile==null) {
|
||||||
PamDialog.showWarning(vrControl.getPamView().getGuiFrame(), "No image found", "The folder selected did not contain any compatible images");
|
PamDialog.showWarning(vrControl.getGuiFrame(), "No image found", "The folder selected did not contain any compatible images");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//go back up a few levels to load file as update flags etc need to be triggerred.
|
//go back up a few levels to load file as update flags etc need to be triggerred.
|
||||||
|
@ -19,6 +19,7 @@ import detectionPlotFX.whistleDDPlot.WhistleDDPlotProvider;
|
|||||||
import spectrogramNoiseReduction.SpectrogramNoiseProcess;
|
import spectrogramNoiseReduction.SpectrogramNoiseProcess;
|
||||||
import whistlesAndMoans.layoutFX.WhistleMoanGUIFX;
|
import whistlesAndMoans.layoutFX.WhistleMoanGUIFX;
|
||||||
import whistlesAndMoans.plots.WhistlePlotProvider;
|
import whistlesAndMoans.plots.WhistlePlotProvider;
|
||||||
|
import PamController.PamConfiguration;
|
||||||
import PamController.PamControlledUnit;
|
import PamController.PamControlledUnit;
|
||||||
import PamController.PamControlledUnitGUI;
|
import PamController.PamControlledUnitGUI;
|
||||||
import PamController.PamControlledUnitSettings;
|
import PamController.PamControlledUnitSettings;
|
||||||
@ -55,7 +56,10 @@ public class WhistleMoanControl extends PamControlledUnit implements PamSettings
|
|||||||
public static final String UNITTYPE = "WhistlesMoans";
|
public static final String UNITTYPE = "WhistlesMoans";
|
||||||
|
|
||||||
public WhistleMoanControl(String unitName) {
|
public WhistleMoanControl(String unitName) {
|
||||||
super(UNITTYPE, unitName);
|
this(null, unitName);
|
||||||
|
}
|
||||||
|
public WhistleMoanControl(PamConfiguration pamConfiguration, String unitName) {
|
||||||
|
super(pamConfiguration, UNITTYPE, unitName);
|
||||||
|
|
||||||
spectrogramNoiseProcess = new SpectrogramNoiseProcess(this);
|
spectrogramNoiseProcess = new SpectrogramNoiseProcess(this);
|
||||||
addPamProcess(spectrogramNoiseProcess);
|
addPamProcess(spectrogramNoiseProcess);
|
||||||
|
@ -201,36 +201,20 @@ public class WhistleToneConnectProcess extends PamProcess {
|
|||||||
@Override
|
@Override
|
||||||
public void setupProcess() {
|
public void setupProcess() {
|
||||||
super.setupProcess();
|
super.setupProcess();
|
||||||
|
|
||||||
SpectrogramNoiseProcess snp = whistleMoanControl.getSpectrogramNoiseProcess();
|
SpectrogramNoiseProcess snp = whistleMoanControl.getSpectrogramNoiseProcess();
|
||||||
setParentDataBlock(snp.getOutputDataBlock());
|
setParentDataBlock(snp.getOutputDataBlock());
|
||||||
if (whistleMoanControl.whistleToneParameters.getDataSource() == null) {
|
if (whistleMoanControl.whistleToneParameters.getDataSource() == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// sourceData = (FFTDataBlock) PamController.getInstance().getDataBlock(FFTDataUnit.class,
|
|
||||||
// whistleMoanControl.whistleToneParameters.getDataSource());
|
|
||||||
// snp.setParentDataBlock(sourceData);
|
|
||||||
sourceData = (FFTDataBlock) getParentDataBlock(); // our source should always be the output of the SpectrogramNoiseProcess
|
sourceData = (FFTDataBlock) getParentDataBlock(); // our source should always be the output of the SpectrogramNoiseProcess
|
||||||
SpectrogramNoiseSettings specnoiseSettings = whistleMoanControl.whistleToneParameters.getSpecNoiseSettings();
|
SpectrogramNoiseSettings specnoiseSettings = whistleMoanControl.whistleToneParameters.getSpecNoiseSettings();
|
||||||
specnoiseSettings.dataSource = whistleMoanControl.whistleToneParameters.getDataSource();
|
specnoiseSettings.dataSource = whistleMoanControl.whistleToneParameters.getDataSource();
|
||||||
snp.setNoiseSettings(specnoiseSettings);
|
snp.setNoiseSettings(specnoiseSettings);
|
||||||
|
|
||||||
chanOrSeqMap = whistleMoanControl.whistleToneParameters.getChanOrSeqBitmap(); // the channelMap in WhistleToneParameters object may be a sequence map or a channel map, depending on source
|
chanOrSeqMap = whistleMoanControl.whistleToneParameters.getChanOrSeqBitmap(); // the channelMap in WhistleToneParameters object may be a sequence map or a channel map, depending on source
|
||||||
// if (sourceData != null) {
|
|
||||||
//// chanOrSeqMap = getParentDataBlock().getChannelMap() &
|
|
||||||
// chanOrSeqMap = getParentDataBlock().getSequenceMap() & // use the sequence bitmap instead of the channel bitmap, in case this is beamformer output
|
|
||||||
// whistleMoanControl.whistleToneParameters.getChanOrSeqBitmap();
|
|
||||||
// outputData.sortOutputMaps(getParentDataBlock().getChannelMap(), getParentDataBlock().getSequenceMapObject(), chanOrSeqMap);
|
|
||||||
// outputData.setFftHop(sourceData.getFftHop());
|
|
||||||
// outputData.setFftLength(sourceData.getFftLength());
|
|
||||||
//
|
|
||||||
// // 2017/11/30 set the whistleLocations channelMap properly
|
|
||||||
// whistleLocations.sortOutputMaps(getParentDataBlock().getChannelMap(), getParentDataBlock().getSequenceMapObject(), chanOrSeqMap);
|
|
||||||
//
|
|
||||||
// // smoothingChannelProcessList = new SmoothingChannelProcess[PamUtils.getHighestChannel(chanOrSeqMap)+1];
|
|
||||||
// // for (int i = 0; i < PamUtils.getHighestChannel(chanOrSeqMap)+1; i++) {
|
|
||||||
// // smoothingChannelProcessList[i] = new SmoothingChannelProcess();
|
|
||||||
// // }
|
|
||||||
// }
|
|
||||||
// set the localisation information in the two output datablocks. If the source is using sequence numbers, then we cannot localise
|
// set the localisation information in the two output datablocks. If the source is using sequence numbers, then we cannot localise
|
||||||
boolean mayBearings = whistleMoanControl.whistleToneParameters.mayHaveBearings();
|
boolean mayBearings = whistleMoanControl.whistleToneParameters.mayHaveBearings();
|
||||||
boolean mayRange = whistleMoanControl.whistleToneParameters.mayHaveRange();
|
boolean mayRange = whistleMoanControl.whistleToneParameters.mayHaveRange();
|
||||||
|
Loading…
Reference in New Issue
Block a user