();
+ 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.
+ * 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 findControlledUnits(Class unitClass) {
+ ArrayList 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 findControlledUnits(Class unitClass, boolean includeSubClasses) {
+ if (includeSubClasses == false) {
+ return findControlledUnits(unitClass);
+ }
+ ArrayList 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 findSettingsSources() {
+ ArrayList settingsSources = new ArrayList();
+ 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 getPlottableDataBlocks(GeneralProjector generalProjector) {
+
+ ArrayList blockList = new ArrayList();
+ 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 makeDataBlockList(Class classType, boolean includSubClasses) {
+
+ ArrayList blockList = new ArrayList();
+ 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 usedModules = new ArrayList();
+ 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 getAllOfflineTaskGroups() {
+ ArrayList tgs = new ArrayList();
+ for (PamControlledUnit unit : pamControlledUnits){
+ int numGroups = unit.getNumOfflineTaskGroups();
+ for (int iGp=0;iGp getAllOfflineTasks() {
+ ArrayList ots = new ArrayList();
+ ArrayList groups = getAllOfflineTaskGroups();
+ for (OfflineTaskGroup group : groups) {
+ int nTasks = group.getNTasks();
+ for (int i = 0; i < nTasks; i++) {
+ ots.add(group.getTask(i));
+ }
+ }
+ return ots;
+ }
+}
diff --git a/src/PamController/PamControlledUnit.java b/src/PamController/PamControlledUnit.java
index 808ddccd..f1962ca8 100644
--- a/src/PamController/PamControlledUnit.java
+++ b/src/PamController/PamControlledUnit.java
@@ -141,6 +141,8 @@ public abstract class PamControlledUnit implements SettingsNameProvider {
private ModuleStatusManager moduleStatusManager;
+ private PamConfiguration pamConfiguration;
+
// private ArrayList offlineTasks = new ArrayList<>();
/**
@@ -155,8 +157,17 @@ public abstract class PamControlledUnit implements SettingsNameProvider {
* name of unit
*/
public PamControlledUnit(String unitType, String unitName) {
+ this(null, unitType, unitName);
+ }
+
+ public PamControlledUnit(PamConfiguration pamConfiguration, String unitType, String unitName) {
this.unitType = unitType;
this.unitName = unitName;
+ this.pamConfiguration = pamConfiguration;
+ if (this.pamConfiguration == null) {
+ this.pamConfiguration = PamController.getInstance().getPamConfiguration();
+ }
+
pamProcesses = new ArrayList();
isViewer = PamController.getInstance().getRunMode() == PamController.RUN_PAMVIEW;
@@ -497,6 +508,12 @@ public abstract class PamControlledUnit implements SettingsNameProvider {
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() {
return pamView;
}
@@ -674,11 +691,11 @@ public abstract class PamControlledUnit implements SettingsNameProvider {
* @param offlineTaskGroup
*/
public void addOfflineTaskGroup(OfflineTaskGroup offlineTaskGroup) {
- if (isViewer){
+// if (isViewer){
offlineTaskGroups.add(offlineTaskGroup);
- }else{
- System.out.println("OfflineTaskGroup cannot be added as is not viewer mode");
- }
+// }else{
+// System.out.println("OfflineTaskGroup cannot be added as is not viewer mode");
+// }
}
@@ -864,4 +881,34 @@ public abstract class PamControlledUnit implements SettingsNameProvider {
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;
+ }
+
}
diff --git a/src/PamController/PamController.java b/src/PamController/PamController.java
index 444bb19a..fecb0463 100644
--- a/src/PamController/PamController.java
+++ b/src/PamController/PamController.java
@@ -34,6 +34,9 @@ import javax.swing.SwingUtilities;
import javax.swing.Timer;
import javax.swing.ToolTipManager;
+import com.jcraft.jsch.ConfigRepository.Config;
+import com.sun.xml.bind.v2.TODO;
+
import Acquisition.AcquisitionProcess;
//import com.sun.org.apache.xerces.internal.dom.DocumentImpl;
@@ -67,7 +70,6 @@ import PamController.soundMedium.GlobalMediumManager;
import PamDetection.PamDetection;
import PamDetection.RawDataUnit;
import PamModel.PamModel;
-import PamModel.PamModelInterface;
import PamModel.PamModelSettings;
import PamModel.PamModuleInfo;
import PamModel.SMRUEnable;
@@ -144,11 +146,7 @@ public class PamController implements PamControllerInterface, PamSettings {
*/
private PamModel pamModelInterface;
- /**
- * List of the current controlled units (PAMGuard modules)
- */
- private ArrayList pamControlledUnits;
-
+ private PamConfiguration pamConfiguration;
/**
* The current PAM status
*/
@@ -235,6 +233,8 @@ public class PamController implements PamControllerInterface, PamSettings {
private PamController(int runMode, Object object) {
uniqueController = this;
+
+ pamConfiguration = new PamConfiguration();
this.runMode = runMode;
@@ -353,10 +353,6 @@ public class PamController implements PamControllerInterface, PamSettings {
*/
public void setupPamguard() {
-
- // create the array list to hold multiple views
- pamControlledUnits = new ArrayList();
-
/**
* Set Locale to English so that formated writes to text fields
* in dialogs use . and not , for the decimal.
@@ -661,9 +657,10 @@ public class PamController implements PamControllerInterface, PamSettings {
// }
void setupProcesses() {
- for (int i = 0; i < pamControlledUnits.size(); i++) {
- pamControlledUnits.get(i).setupControlledUnit();
- }
+// for (int i = 0; i < pamControlledUnits.size(); i++) {
+// pamControlledUnits.get(i).setupControlledUnit();
+// }
+ pamConfiguration.setupProcesses();
}
/**
@@ -675,12 +672,7 @@ public class PamController implements PamControllerInterface, PamSettings {
* 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;
+ return pamConfiguration.canClose();
}
@@ -694,9 +686,7 @@ public class PamController implements PamControllerInterface, PamSettings {
getUidManager().runShutDownOps();
- for (int i = 0; i < pamControlledUnits.size(); i++) {
- pamControlledUnits.get(i).pamClose();
- }
+ pamConfiguration.pamClose();
}
/**
@@ -716,6 +706,7 @@ public class PamController implements PamControllerInterface, PamSettings {
* it to be easy to override this for specific modules / processes / data blocks.
*/
public void saveViewerData() {
+ ArrayList pamControlledUnits = pamConfiguration.getPamControlledUnits();
for (int i = 0; i < pamControlledUnits.size(); i++) {
pamControlledUnits.get(i).saveViewerData();
}
@@ -728,7 +719,8 @@ public class PamController implements PamControllerInterface, PamSettings {
@Override
public void addControlledUnit(PamControlledUnit controlledUnit) {
- pamControlledUnits.add(controlledUnit);
+
+ pamConfiguration.addControlledUnit(controlledUnit);
guiFrameManager.addControlledUnit(controlledUnit);
@@ -854,8 +846,8 @@ public class PamController implements PamControllerInterface, PamSettings {
guiFrameManager.removeControlledUnit(controlledUnit);
- while (pamControlledUnits.contains(controlledUnit)) {
- pamControlledUnits.remove(controlledUnit);
+ boolean removed = pamConfiguration.removeControlledUnt(controlledUnit);
+ if (removed) {
notifyModelChanged(PamControllerInterface.REMOVE_CONTROLLEDUNIT);
}
// 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);
if (newOrder != null) {
// re-order the modules according the new list.
- reOrderModules(newOrder);
+ pamConfiguration.reOrderModules(newOrder);
notifyModelChanged(PamControllerInterface.REORDER_CONTROLLEDUNITS);
@@ -881,22 +873,22 @@ public class PamController implements PamControllerInterface, PamSettings {
return false;
}
- private boolean reOrderModules(int[] newOrder) {
-
- if (pamControlledUnits.size() != newOrder.length) return false;
-
- ArrayList newList = new ArrayList();
-
- for (int i = 0; i < newOrder.length; i++) {
-
- newList.add(pamControlledUnits.get(newOrder[i]));
-
- }
-
- pamControlledUnits = newList;
-
- return true;
- }
+// private boolean reOrderModules(int[] newOrder) {
+//
+// if (pamControlledUnits.size() != newOrder.length) return false;
+//
+// ArrayList newList = new ArrayList();
+//
+// for (int i = 0; i < newOrder.length; i++) {
+//
+// newList.add(pamControlledUnits.get(newOrder[i]));
+//
+// }
+//
+// pamControlledUnits = newList;
+//
+// return true;
+// }
/**
* Swaps the positions of two modules in the main list of modules and
@@ -922,20 +914,12 @@ public class PamController implements PamControllerInterface, PamSettings {
@Override
public PamControlledUnit getControlledUnit(int iUnit) {
- if (iUnit < getNumControlledUnits()) {
- return pamControlledUnits.get(iUnit);
- }
- return null;
+ return pamConfiguration.getControlledUnit(iUnit);
}
@Override
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;
+ return pamConfiguration.findControlledUnit(unitType);
}
/**
@@ -944,17 +928,7 @@ public class PamController implements PamControllerInterface, PamSettings {
* @return list of units.
*/
public ArrayList findControlledUnits(String unitType) {
- ArrayList l = new ArrayList();
- 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;
+ return pamConfiguration.findControlledUnits(unitType);
}
/**
* 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.
*/
public ArrayList findControlledUnits(String unitType, String unitName) {
- ArrayList l = new ArrayList();
- 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;
+ return pamConfiguration.findControlledUnits(unitType, unitName);
}
@Override
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;
+ return pamConfiguration.findControlledUnit(unitType, unitName);
}
/**
@@ -1000,13 +954,7 @@ public class PamController implements PamControllerInterface, PamSettings {
* @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;
+ return pamConfiguration.findControlledUnit(unitClass, unitName);
}
/**
@@ -1015,13 +963,7 @@ public class PamController implements PamControllerInterface, PamSettings {
* @return List of current instances of this class.
*/
public ArrayList findControlledUnits(Class unitClass) {
- ArrayList foundUnits = new ArrayList<>();
- for (int i = 0; i < getNumControlledUnits(); i++) {
- if (pamControlledUnits.get(i).getClass() == unitClass) {
- foundUnits.add(pamControlledUnits.get(i));
- }
- }
- return foundUnits;
+ return pamConfiguration.findControlledUnits(unitClass);
}
/**
@@ -1030,16 +972,7 @@ public class PamController implements PamControllerInterface, PamSettings {
* @return List of current instances of this class.
*/
public ArrayList findControlledUnits(Class unitClass, boolean includeSubClasses) {
- if (includeSubClasses == false) {
- return findControlledUnits(unitClass);
- }
- ArrayList foundUnits = new ArrayList<>();
- for (int i = 0; i < getNumControlledUnits(); i++) {
- if (unitClass.isAssignableFrom(pamControlledUnits.get(i).getClass())) {
- foundUnits.add(pamControlledUnits.get(i));
- }
- }
- return foundUnits;
+ return pamConfiguration.findControlledUnits(unitClass, includeSubClasses);
}
/**
@@ -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.
*/
public boolean isControlledUnit(String controlName) {
- for (int i = 0; i < getNumControlledUnits(); i++) {
- if (pamControlledUnits.get(i).getUnitName().equalsIgnoreCase(controlName)) {
- return true;
- }
- }
- return false;
+ return pamConfiguration.isControlledUnit(controlName);
}
@Override
public int getNumControlledUnits() {
- if (pamControlledUnits == null) {
- return 0;
- }
- return pamControlledUnits.size();
+ return pamConfiguration.getNumControlledUnits();
}
static public PamController getInstance() {
return uniqueController;
}
- @Override
- public PamModelInterface getModelInterface() {
+ public PamModel getModelInterface() {
return pamModelInterface;
}
@@ -1185,6 +1109,8 @@ public class PamController implements PamControllerInterface, PamSettings {
globalTimeManager.getGlobalTimeParameters().getStartupDelay());
manualStop = false;
+
+ ArrayList pamControlledUnits = pamConfiguration.getPamControlledUnits();
PamCalendar.setSessionStartTime(startTime);
setPamStatus(PAM_RUNNING);
@@ -1283,6 +1209,7 @@ public class PamController implements PamControllerInterface, PamSettings {
// actually stopped
// statusCheckThread = new Thread(new StatusTimer());
// statusCheckThread.start();
+ ArrayList pamControlledUnits = pamConfiguration.getPamControlledUnits();
// tell all controlled units to stop
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
* buffers have had time to empty.
*/
+ ArrayList pamControlledUnits = pamConfiguration.getPamControlledUnits();
+
if (PamModel.getPamModel().isMultiThread()) {
for (int iU = 0; iU < pamControlledUnits.size(); iU++) {
pamControlledUnits.get(iU).flushDataBlockBuffers(2000);
@@ -1475,6 +1404,8 @@ public class PamController implements PamControllerInterface, PamSettings {
// }
// Debug.out.println(" Are we finished? " + areWeFinished);
// return areWeFinished;
+ ArrayList pamControlledUnits = pamConfiguration.getPamControlledUnits();
+
boolean running = false;
for (PamControlledUnit aUnit : pamControlledUnits) {
int numProcesses = aUnit.getNumPamProcesses();
@@ -1497,16 +1428,7 @@ public class PamController implements PamControllerInterface, PamSettings {
* PAMGUARD settings via the database and binary storage modules.
*/
private 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);
+ pamConfiguration.saveSettings(timeNow);
}
/**
@@ -1523,18 +1445,20 @@ public class PamController implements PamControllerInterface, PamSettings {
* @return path to the binary store.
*/
public String findBinaryStorePath() {
- BinaryStore binaryControl = BinaryStore.findBinaryStoreControl();
- if (binaryControl == null) {
- return null;
- }
- String storeLoc = binaryControl.getBinaryStoreSettings().getStoreLocation();
- if (storeLoc == null) {
- return "";
- }
- if (storeLoc.endsWith(File.separator) == false) {
- storeLoc += File.separator;
- }
- return storeLoc;
+// TODO get rid of the singleton binary store control and do from the Config.class
+// BinaryStore binaryControl = BinaryStore.findBinaryStoreControl();
+// if (binaryControl == null) {
+// return null;
+// }
+// String storeLoc = binaryControl.getBinaryStoreSettings().getStoreLocation();
+// if (storeLoc == null) {
+// return "";
+// }
+// if (storeLoc.endsWith(File.separator) == false) {
+// storeLoc += File.separator;
+// }
+// return storeLoc;
+ return pamConfiguration.findBinaryStorePath();
}
/**
@@ -1544,15 +1468,7 @@ public class PamController implements PamControllerInterface, PamSettings {
* @see PamSettingsSource
*/
public ArrayList findSettingsSources() {
- ArrayList settingsSources = new ArrayList();
- 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;
+ return pamConfiguration.findSettingsSources();
}
@Override
@@ -1581,37 +1497,37 @@ public class PamController implements PamControllerInterface, PamSettings {
*/
@Override
public ArrayList getFFTDataBlocks() {
- return makeDataBlockList(FFTDataUnit.class, true);
+ return pamConfiguration.getFFTDataBlocks();
}
@Override
public PamDataBlock getFFTDataBlock(int id) {
- return getDataBlock(FFTDataUnit.class, id);
+ return pamConfiguration.getDataBlock(FFTDataUnit.class, id);
}
@Override
public PamDataBlock getFFTDataBlock(String name) {
- return getDataBlock(FFTDataUnit.class, name);
+ return pamConfiguration.getDataBlock(FFTDataUnit.class, name);
}
@Override
public ArrayList getRawDataBlocks() {
- return makeDataBlockList(RawDataUnit.class, true);
+ return pamConfiguration.makeDataBlockList(RawDataUnit.class, true);
}
@Override
public PamRawDataBlock getRawDataBlock(int id) {
- return (PamRawDataBlock) getDataBlock(RawDataUnit.class, id);
+ return (PamRawDataBlock) pamConfiguration.getDataBlock(RawDataUnit.class, id);
}
@Override
public PamRawDataBlock getRawDataBlock(String name) {
- return (PamRawDataBlock) getDataBlock(RawDataUnit.class, name);
+ return pamConfiguration.getRawDataBlock(name);
}
@Override
public ArrayList getDetectorDataBlocks() {
- return makeDataBlockList(PamDetection.class, true);
+ return pamConfiguration.getDetectorDataBlocks();
}
@Override
@@ -1649,33 +1565,16 @@ public class PamController implements PamControllerInterface, PamSettings {
* true.
*/
public ArrayList getDataBlocks(Class blockType, boolean includeSubClasses) {
- return makeDataBlockList(blockType, includeSubClasses);
+ return pamConfiguration.getDataBlocks(blockType, includeSubClasses);
}
@Override
public ArrayList getDataBlocks() {
- return makeDataBlockList(PamDataUnit.class, true);
+ return pamConfiguration.getDataBlocks();
}
public ArrayList getPlottableDataBlocks(GeneralProjector generalProjector) {
-
- ArrayList blockList = new ArrayList();
- 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;
+ return pamConfiguration.getPlottableDataBlocks(generalProjector);
}
/**
@@ -1702,38 +1601,9 @@ public class PamController implements PamControllerInterface, PamSettings {
// }
// }
// }
- private ArrayList makeDataBlockList(Class classType, boolean includSubClasses) {
-
- ArrayList blockList = new ArrayList();
- 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;
- }
+// private ArrayList makeDataBlockList(Class classType, boolean includSubClasses) {
+// return pamConfiguration.makeDataBlockList(classType, includSubClasses);
+// }
/**
* 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
public PamDataBlock getDataBlock(Class blockType, int id) {
-
- ArrayList blocks = getDataBlocks(blockType, true);
- if (id >= 0 && id < blocks.size()) return blocks.get(id);
- return null;
+ return pamConfiguration.getDataBlock(blockType, id);
}
/**
@@ -1760,23 +1627,7 @@ public class PamController implements PamControllerInterface, PamSettings {
*/
@Override
public PamDataBlock getDataBlock(Class blockType, String name) {
- if (name == null) return null;
- ArrayList 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;
+ return pamConfiguration.getDataBlock(blockType, name);
}
/**
@@ -1785,20 +1636,7 @@ public class PamController implements PamControllerInterface, PamSettings {
* @return block
*/
public PamDataBlock getDataBlockByLongName(String longName) {
- if (longName == null) return null;
- ArrayList 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;
+ return pamConfiguration.getDataBlockByLongName(longName);
}
/**
@@ -1885,11 +1723,7 @@ public class PamController implements PamControllerInterface, PamSettings {
MasterReferencePoint.notifyModelChanged(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);
- }
+ pamConfiguration.notifyModelChanged(changeType);
PamSettingManager.getInstance().notifyModelChanged(changeType);
@@ -1960,6 +1794,7 @@ public class PamController implements PamControllerInterface, PamSettings {
private void changedThreading() {
PamProcess pamProcess;
int nP;
+ ArrayList pamControlledUnits = pamConfiguration.getPamControlledUnits();
for (int i = 0; i < pamControlledUnits.size(); i++) {
nP = pamControlledUnits.get(i).getNumPamProcesses();
for (int iP = 0; iP < nP; iP++) {
@@ -1993,13 +1828,7 @@ public class PamController implements PamControllerInterface, PamSettings {
@Override
public Serializable getSettingsReference() {
- ArrayList usedModules = new ArrayList();
- 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;
+ return pamConfiguration.getSettingsReference();
}
@Override
@@ -2041,10 +1870,7 @@ public class PamController implements PamControllerInterface, PamSettings {
// 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(DESTROY_EVERYTHING);
- }
- pamControlledUnits = null;
+ pamConfiguration.destroyModel();
PamSettingManager.getInstance().reset();
@@ -2369,6 +2195,7 @@ public class PamController implements PamControllerInterface, PamSettings {
public void loadOldSettings(PamSettingsGroup settingsGroup) {
loadOldSettings(settingsGroup, true);
}
+
/**
* Called to load a specific set of PAMGUARD settings in
* viewer mode, which were previously loaded in from a
@@ -2473,7 +2300,7 @@ public class PamController implements PamControllerInterface, PamSettings {
continue;
}
aUnit = findControlledUnit(moduleClass, aModuleInfo.unitName);
- currentPos = pamControlledUnits.indexOf(aUnit);
+ currentPos = pamConfiguration.getControlledUnitIndex(aUnit);
if (currentPos >= 0) {
temp = orderLUT[nFound];
orderLUT[nFound] = currentPos;
@@ -2839,4 +2666,12 @@ public class PamController implements PamControllerInterface, PamSettings {
return this.globalMediumManager;
}
+ /**
+ * Gt the main PAMGuard configuration (list of connected modules).
+ * @return the pamConfiguration
+ */
+ public PamConfiguration getPamConfiguration() {
+ return pamConfiguration;
+ }
+
}
diff --git a/src/PamController/PamControllerInterface.java b/src/PamController/PamControllerInterface.java
index 3f6dd192..d363f958 100644
--- a/src/PamController/PamControllerInterface.java
+++ b/src/PamController/PamControllerInterface.java
@@ -25,7 +25,7 @@ import java.util.ArrayList;
import javax.swing.JFrame;
-import PamModel.PamModelInterface;
+import PamModel.PamModel;
import PamModel.PamModuleInfo;
import PamView.GuiFrameManager;
import PamView.PamViewInterface;
@@ -102,7 +102,7 @@ public interface PamControllerInterface {
*
* @return Reference to the PamGuard model
*/
- public PamModelInterface getModelInterface();
+ public PamModel getModelInterface();
/**
* Instruction to the controller (probably from a menu command inthe view)
diff --git a/src/PamController/PamSettingManager.java b/src/PamController/PamSettingManager.java
index d101fad7..ddd15740 100644
--- a/src/PamController/PamSettingManager.java
+++ b/src/PamController/PamSettingManager.java
@@ -293,7 +293,7 @@ public class PamSettingManager {
* call this for at least one set of settings. Often the PamSettings
* is implemented by the class that extends PamControlledunit, but
* 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.
* @see PamSettings
* @see PamControlledUnit
diff --git a/src/PamModel/PamModel.java b/src/PamModel/PamModel.java
index 8c2b3bda..9cdb9992 100644
--- a/src/PamModel/PamModel.java
+++ b/src/PamModel/PamModel.java
@@ -74,7 +74,7 @@ import PamUtils.FileFinder;
* PamController.
*
*/
-final public class PamModel implements PamModelInterface, PamSettings {
+final public class PamModel implements PamSettings {
private PamController pamController;
@@ -982,7 +982,6 @@ final public class PamModel implements PamModelInterface, PamSettings {
}
- @Override
public boolean modelSettings(JFrame frame) {
PamModelSettings newSettings = ThreadingDialog.showDialog(frame, pamModelSettings);
if (newSettings != null) {
diff --git a/src/PamModel/PamModelInterface.java b/src/PamModel/PamModelInterface.java
index 2ad342e0..9875e25a 100644
--- a/src/PamModel/PamModelInterface.java
+++ b/src/PamModel/PamModelInterface.java
@@ -29,6 +29,7 @@ import javax.swing.JFrame;
* order that the PamController and the PamView can interface with the
* model.
*/
+@Deprecated
public interface PamModelInterface {
/**
diff --git a/src/PamModel/PamModuleInfo.java b/src/PamModel/PamModuleInfo.java
index 8284e145..e7ba3945 100644
--- a/src/PamModel/PamModuleInfo.java
+++ b/src/PamModel/PamModuleInfo.java
@@ -10,6 +10,7 @@ import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
+import PamController.PamConfiguration;
import PamController.PamControlledUnit;
import PamController.PamController;
import PamController.PamControllerInterface;
@@ -34,6 +35,9 @@ public class PamModuleInfo implements PamDependent{
private Class moduleClass;
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();
*/
@@ -209,7 +213,7 @@ public class PamModuleInfo implements PamDependent{
dependencyManager.checkDependency(parentFrame, moduleInfo, true);
}
// create a new PamControlledUnit and add it to PamGuard ...
- PamControllerInterface pamController = PamController.getInstance();
+ PamController pamController = PamController.getInstance();
pamController.addModule(parentFrame, moduleInfo);
}
@@ -219,38 +223,63 @@ public class PamModuleInfo implements PamDependent{
public AddModuleMenuAction getMenuAction(Frame parentFrame) {
return new AddModuleMenuAction(parentFrame, this);
}
-
+
public PamControlledUnit create(String unitName) {
+ return create(null, unitName);
+ }
+
+ public PamControlledUnit create(PamConfiguration pamConfiguration, String unitName) {
PamControlledUnit newUnit = null;
- Class[] paramList = new Class[1];
- paramList[0] = unitName.getClass();
+// Class[] paramList = new Class[1];
+// paramList[0] = unitName.getClass();
+ boolean error = false;
try {
- Constructor constructor = moduleClass.getConstructor(paramList);
-// Debug.out.println("unitName:"+ unitName);
- newUnit = (PamControlledUnit) constructor.newInstance(unitName);
+ Constructor constructor = moduleClass.getConstructor(constrParams1);
+ newUnit = (PamControlledUnit) constructor.newInstance(pamConfiguration, unitName);
newUnit.setPamModuleInfo(this);
}
catch (Exception Ex) {
- String title = "Error loading module";
- String msg = "There was an error trying to load " + unitName + "." +
- "If this is a core Pamguard module, please copy the error message text and email to " +
- "support@pamguard.org.
" +
- "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.
" +
- "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;
}
-
+ if (newUnit == null) {
+ try {
+ Constructor constructor = moduleClass.getConstructor(constrParams2);
+ newUnit = (PamControlledUnit) constructor.newInstance(unitName);
+ newUnit.setPamModuleInfo(this);
+ }
+ catch (Exception Ex) {
+ String title = "Error loading module";
+ String msg = "There was an error trying to load " + unitName + ".
" +
+ "If this is a core Pamguard module, please copy the error message text and email to " +
+ "support@pamguard.org.
" +
+ "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.
" +
+ "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);
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) {
setNInstances(nInstances - 1);
@@ -376,7 +405,7 @@ public class PamModuleInfo implements PamDependent{
}
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 "
+ pamControlledUnit.getUnitName());
if (ans == JOptionPane.YES_OPTION) {
diff --git a/src/PamView/PamGui.java b/src/PamView/PamGui.java
index 548927b0..0ebec8a3 100644
--- a/src/PamView/PamGui.java
+++ b/src/PamView/PamGui.java
@@ -87,7 +87,6 @@ import PamController.PamguardVersionInfo;
import PamController.settings.SettingsImport;
import PamModel.CommonPluginInterface;
import PamModel.PamModel;
-import PamModel.PamModelInterface;
import PamModel.PamModuleInfo;
import PamModel.PamPluginInterface;
import PamModel.AboutPluginDisplay;
@@ -133,11 +132,14 @@ public class PamGui extends PamView implements WindowListener, PamSettings {
* Outer layered pane which allows things to be added the GUI.
*/
private JLayeredPane layeredPane;
+ private PamController pamController;
- public PamGui(PamControllerInterface pamControllerInterface,
- PamModelInterface pamModelInterface, int frameNumber)
+ public PamGui(PamController pamControllerInterface,
+ PamModel pamModelInterface, int frameNumber)
{
super(pamControllerInterface, pamModelInterface, frameNumber);
+
+ this.pamController = pamControllerInterface;
startMenuEnabler = new MenuItemEnabler();
stopMenuEnabler = new MenuItemEnabler();
@@ -1198,7 +1200,7 @@ public class PamGui extends PamView implements WindowListener, PamSettings {
class menuShowObjectDiagram implements ActionListener {
public void actionPerformed(ActionEvent ev){
- PamObjectViewer.Show(getGuiFrame());
+ PamObjectViewer.Show(getGuiFrame(), pamController.getPamConfiguration());
}
}
diff --git a/src/PamView/PamMenu.java b/src/PamView/PamMenu.java
index 836c7c0d..62ef9280 100644
--- a/src/PamView/PamMenu.java
+++ b/src/PamView/PamMenu.java
@@ -26,7 +26,7 @@ import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
-import PamModel.PamModelInterface;
+import PamModel.PamModel;
/**
* @author dgillespie
@@ -39,7 +39,7 @@ import PamModel.PamModelInterface;
*
*/
public class PamMenu {
- static public JMenuBar createBasicMenu(PamModelInterface pamModelInterface,
+ static public JMenuBar createBasicMenu(PamModel pamModelInterface,
ActionListener actionListener) {
JMenuBar menuBar = new JMenuBar();
@@ -52,7 +52,7 @@ public class PamMenu {
return menuBar;
}
- static public JMenu fileMenu(PamModelInterface pamModelInterface,
+ static public JMenu fileMenu(PamModel pamModelInterface,
ActionListener actionListener) {
JMenuItem menuItem;
JMenu menu = new JMenu("File");
@@ -64,7 +64,7 @@ public class PamMenu {
return menu;
}
- static public JMenu loggingMenu(PamModelInterface pamModelInterface,
+ static public JMenu loggingMenu(PamModel pamModelInterface,
ActionListener actionListener) {
JMenuItem menuItem;
JMenu menu = new JMenu("Logging");
@@ -76,7 +76,7 @@ public class PamMenu {
return menu;
}
- static public JMenu detectionMenu(PamModelInterface pamModelInterface,
+ static public JMenu detectionMenu(PamModel pamModelInterface,
ActionListener actionListener) {
JMenu menu = new JMenu("Detection");
JMenuItem menuItem;
@@ -108,7 +108,7 @@ public class PamMenu {
return menu;
}
- static public JMenu displayMenu(PamModelInterface pamModelInterface,
+ static public JMenu displayMenu(PamModel pamModelInterface,
ActionListener actionListener) {
JMenu menu = new JMenu("Display");
JMenuItem menuItem;
diff --git a/src/PamView/PamObjectViewer.java b/src/PamView/PamObjectViewer.java
index 2801162b..17525076 100644
--- a/src/PamView/PamObjectViewer.java
+++ b/src/PamView/PamObjectViewer.java
@@ -42,6 +42,7 @@ import javax.swing.Timer;
import javax.swing.WindowConstants;
import PamController.NewModuleDialog;
+import PamController.PamConfiguration;
import PamController.PamControlledUnit;
import PamController.PamControlledUnitSettings;
import PamController.PamController;
@@ -114,9 +115,11 @@ public class PamObjectViewer implements PamViewInterface, ComponentListener,
private Stroke arrowStroke, instantArrowStroke;
+ private PamConfiguration pamConfiguration;
+
// Font controllerFont, processFont, datablockFont;
- private PamObjectViewer(JFrame frame) {
+ private PamObjectViewer(Frame frame) {
arrowStroke = new BasicStroke(1.5f);
instantArrowStroke = new BasicStroke(1.5f);
@@ -125,23 +128,27 @@ public class PamObjectViewer implements PamViewInterface, ComponentListener,
objectFrame = new ObjectFrame(frame);
- MakeDiagram();
+// MakeDiagram();
PamController.getInstance().addView(this);
PamSettingManager.getInstance().registerSettings(this);
}
- static public PamObjectViewer getObjectViewer(JFrame frame) {
+ static public PamObjectViewer getObjectViewer(Frame frame) {
if (singleInstance == null) {
singleInstance = new PamObjectViewer(frame);
}
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);
+ singleInstance.MakeDiagram();
+
// 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
// 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() {
if (pamObjectViewerSettings.viewStyle == PamObjectViewerSettings.VIEWBYPROCESS) {
@@ -180,12 +191,16 @@ public class PamObjectViewer implements PamViewInterface, ComponentListener,
private void makeControllerDiagram() {
clearDiagram();
- PamControllerInterface pamController = PamController.getInstance();
+
+ if (pamConfiguration == null) {
+ return;
+ }
+
PamControlledUnit pamControlledUnit;
PamControllerView pamControllerView;
controllerList = new ArrayList();
- for (int iUnit = 0; iUnit < pamController.getNumControlledUnits(); iUnit++) {
- pamControlledUnit = pamController.getControlledUnit(iUnit);
+ for (int iUnit = 0; iUnit < pamConfiguration.getNumControlledUnits(); iUnit++) {
+ pamControlledUnit = pamConfiguration.getControlledUnit(iUnit);
if (pamControlledUnit.getNumPamProcesses() == 0
&& pamObjectViewerSettings.showProcesslessModules == false) {
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();
- // 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() {
if (controllerList == null) {
return;
@@ -285,11 +281,10 @@ public class PamObjectViewer implements PamViewInterface, ComponentListener,
int x = xStart;
int y = yStart;
- PamControllerInterface pamController = PamController.getInstance();
PamControlledUnit pamControlledUnit;
PamProcess pamProcess;
- for (int iUnit = 0; iUnit < pamController.getNumControlledUnits(); iUnit++) {
- pamControlledUnit = pamController.getControlledUnit(iUnit);
+ for (int iUnit = 0; iUnit < pamConfiguration.getNumControlledUnits(); iUnit++) {
+ pamControlledUnit = pamConfiguration.getControlledUnit(iUnit);
for (int iP = 0; iP < pamControlledUnit.getNumPamProcesses(); iP++) {
pamProcess = pamControlledUnit.getPamProcess(iP);
pamProcessView = new PamProcessView(pamControlledUnit,
@@ -417,7 +412,7 @@ public class PamObjectViewer implements PamViewInterface, ComponentListener,
class ObjectFrame extends JFrame implements ActionListener {
- ObjectFrame(JFrame frame) {
+ ObjectFrame(Frame frame) {
setTitle("Pamguard Data Model");
// fixed case of Resources 17/8/08 DG.
@@ -599,6 +594,9 @@ public class PamObjectViewer implements PamViewInterface, ComponentListener,
int bestYGap;
Rectangle sourceBounds, destBounds;
hasInstant = false;
+ if (controllerList == null) {
+ return;
+ }
for (int i = 0; i < controllerList.size(); i++) {
pamControllerView = controllerList.get(i);
pamControlledUnit = pamControllerView.pamControlledUnit;
diff --git a/src/PamView/PamView.java b/src/PamView/PamView.java
index f742de52..bcd6e259 100644
--- a/src/PamView/PamView.java
+++ b/src/PamView/PamView.java
@@ -24,7 +24,7 @@ import javax.swing.JFrame;
import PamController.PamControlledUnit;
import PamController.PamControllerInterface;
-import PamModel.PamModelInterface;
+import PamModel.PamModel;
import javafx.application.Platform;
/**
@@ -36,7 +36,7 @@ abstract public class PamView implements PamViewInterface {
protected PamControllerInterface pamControllerInterface;
- protected PamModelInterface pamModelInterface;
+ protected PamModel pamModelInterface;
/**
* 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,
- PamModelInterface pamModelInterface, int frameNumber) {
+ PamModel pamModelInterface, int frameNumber) {
this.pamControllerInterface = pamControllerInterface;
this.pamModelInterface = pamModelInterface;
this.frameNumber = frameNumber;
diff --git a/src/PamView/component/DataBlockTableView.java b/src/PamView/component/DataBlockTableView.java
index f8ae214f..af5918cf 100644
--- a/src/PamView/component/DataBlockTableView.java
+++ b/src/PamView/component/DataBlockTableView.java
@@ -11,6 +11,7 @@ import javax.swing.JComponent;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
+import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.SwingUtilities;
import javax.swing.table.AbstractTableModel;
@@ -128,6 +129,14 @@ public abstract class DataBlockTableView {
}
}
+ /**
+ * Get table. Allows adding of more menu handlers, etc.
+ * @return the table object.
+ */
+ public JTable getTable() {
+ return testTable;
+ }
+
/**
* Set allowing of multiple row selection.
* @param allow
@@ -228,7 +237,7 @@ public abstract class DataBlockTableView {
* @param tableRow
* @return data unit for the table row.
*/
- private final T getDataUnit(int tableRow) {
+ protected final T getDataUnit(int tableRow) {
synchronized (copySynch) {
int rowIndex = getDataIndexForRow(tableRow);
if (rowIndex < 0) return null;
@@ -377,7 +386,7 @@ public abstract class DataBlockTableView {
* so consider changing the row selection
* @param e
*/
- private void checkRowSelection(MouseEvent e) {
+ protected void checkRowSelection(MouseEvent e) {
int tableRow = testTable.rowAtPoint(e.getPoint());
int currentRow = testTable.getSelectedRow();
if (tableRow != currentRow) {
@@ -389,6 +398,16 @@ public abstract class DataBlockTableView {
}
}
+ /**
+ * 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 {
@Override
@@ -448,7 +467,7 @@ public abstract class DataBlockTableView {
*/
@Override
public String getColumnName(int column) {
- return getColumnNames()[column];
+ return DataBlockTableView.this.getColumnName(column);
}
/* (non-Javadoc)
diff --git a/src/PamView/dialog/GroupedSourcePanel.java b/src/PamView/dialog/GroupedSourcePanel.java
index c4914ca5..3906dc45 100644
--- a/src/PamView/dialog/GroupedSourcePanel.java
+++ b/src/PamView/dialog/GroupedSourcePanel.java
@@ -154,9 +154,13 @@ public class GroupedSourcePanel extends SourcePanel {
public void setChannelGroups(int[] channelGroups) {
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]);
}
+ catch (Exception e) {
+
+ }
+ }
}
public static void addComponent(JPanel panel, Component p, GridBagConstraints constraints){
diff --git a/src/SoundRecorder/RecorderTabPanel.java b/src/SoundRecorder/RecorderTabPanel.java
index 67dd07fd..799684aa 100644
--- a/src/SoundRecorder/RecorderTabPanel.java
+++ b/src/SoundRecorder/RecorderTabPanel.java
@@ -343,7 +343,7 @@ public class RecorderTabPanel implements PamTabPanel, RecorderView {
class SettingsButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
- recorderControl.recordSettingsDialog(recorderControl.getPamView().getGuiFrame());
+ recorderControl.recordSettingsDialog(recorderControl.getGuiFrame());
}
}
diff --git a/src/Spectrogram/SpectrogramDisplay.java b/src/Spectrogram/SpectrogramDisplay.java
index 99c86de6..dd2536d6 100644
--- a/src/Spectrogram/SpectrogramDisplay.java
+++ b/src/Spectrogram/SpectrogramDisplay.java
@@ -107,6 +107,7 @@ import PamView.GeneralProjector;
import PamView.ColourArray.ColourArrayType;
import PamView.dialog.PamLabel;
import PamView.PamColors;
+import PamView.PamView;
import PamView.hidingpanel.HidingDialogPanel;
import PamView.panel.CornerLayout;
import PamView.panel.CornerLayoutContraint;
@@ -275,11 +276,13 @@ InternalFrameListener, DisplayPanelContainer, SpectrogramParametersUser, PamSett
// }
if (spectrogramParameters == null) {
this.spectrogramParameters = new SpectrogramParameters();
- // setSettings(); // force up the dialog.
- SpectrogramParameters newParams = SpectrogramParamsDialog
- .showDialog(userDisplayControl.getPamView().getGuiFrame(), spectrogramPanels, spectrogramParameters);
- if (newParams != null) {
- this.spectrogramParameters = newParams;
+ PamView view = userDisplayControl.getPamView();
+ if (view != null) {
+ SpectrogramParameters newParams = SpectrogramParamsDialog
+ .showDialog(userDisplayControl.getGuiFrame(), spectrogramPanels, spectrogramParameters);
+ if (newParams != null) {
+ this.spectrogramParameters = newParams;
+ }
}
}
@@ -1184,7 +1187,7 @@ InternalFrameListener, DisplayPanelContainer, SpectrogramParametersUser, PamSett
// SpectrogramParameters newParams = SpectrogramParamsDialog
// .showDialog(userDisplayControl.getPamView().getGuiFrame(), this.getOverlayMarker(), spectrogramParameters);
SpectrogramParameters newParams = SpectrogramParamsDialog
- .showDialog(userDisplayControl.getPamView().getGuiFrame(), spectrogramPanels, spectrogramParameters);
+ .showDialog(userDisplayControl.getGuiFrame(), spectrogramPanels, spectrogramParameters);
if (newParams == null) return;
diff --git a/src/alarm/AlarmOfflineTask.java b/src/alarm/AlarmOfflineTask.java
index c1e40c33..47aa8c06 100644
--- a/src/alarm/AlarmOfflineTask.java
+++ b/src/alarm/AlarmOfflineTask.java
@@ -62,7 +62,7 @@ public class AlarmOfflineTask extends OfflineTask {
@Override
public boolean callSettings() {
- Frame frame = alarmControl.getPamView().getGuiFrame();
+ Frame frame = alarmControl.getGuiFrame();
boolean ok = alarmControl.showAlarmDialog(frame);
if (ok) {
setParentDataBlock(alarmProcess.getSourceDataBlock());
diff --git a/src/autecPhones/AutecPhonesControl.java b/src/autecPhones/AutecPhonesControl.java
index 3051d1f8..09bced27 100644
--- a/src/autecPhones/AutecPhonesControl.java
+++ b/src/autecPhones/AutecPhonesControl.java
@@ -22,7 +22,7 @@ public class AutecPhonesControl extends PamControlledUnit {
}
public Frame getGuiFrame() {
- return super.getPamView().getGuiFrame();
+ return super.getGuiFrame();
}
class AutecProcess extends PamProcess {
diff --git a/src/binaryFileStorage/BinaryStore.java b/src/binaryFileStorage/BinaryStore.java
index f3965911..4369c0f7 100644
--- a/src/binaryFileStorage/BinaryStore.java
+++ b/src/binaryFileStorage/BinaryStore.java
@@ -923,7 +923,7 @@ PamSettingsSource, DataOutputStore {
protected void process(List chunks) {
if (PamGUIManager.isSwing()) {
if (binaryMapDialog == null) {
- binaryMapDialog = BinaryMapMakingDialog.showDialog(getPamView().getGuiFrame());
+ binaryMapDialog = BinaryMapMakingDialog.showDialog(PamController.getMainFrame());
}
super.process(chunks);
for (int i = 0; i < chunks.size(); i++) {
@@ -2370,7 +2370,7 @@ PamSettingsSource, DataOutputStore {
* Get the unit type for the binary store.
* @return the binary store unit type.
*/
- private static String getBinaryUnitType() {
+ public static String getBinaryUnitType() {
return defUnitType;
}
diff --git a/src/clickDetector/ClickBTDisplay.java b/src/clickDetector/ClickBTDisplay.java
index 40c1bd1e..f91c3ebd 100644
--- a/src/clickDetector/ClickBTDisplay.java
+++ b/src/clickDetector/ClickBTDisplay.java
@@ -2771,7 +2771,7 @@ public class ClickBTDisplay extends ClickDisplay implements PamObserver, PamSett
BTDisplayParameters newParameters =
ClickDisplayDialog.showDialog(clickControl,
- clickControl.getPamView().getGuiFrame(), btDisplayParameters);
+ clickControl.getGuiFrame(), btDisplayParameters);
if (newParameters != null){
btDisplayParameters = newParameters.clone();
if (getVScaleManager() != null) {
diff --git a/src/clickDetector/ClickControl.java b/src/clickDetector/ClickControl.java
index 5bd48dd9..e03b73a7 100644
--- a/src/clickDetector/ClickControl.java
+++ b/src/clickDetector/ClickControl.java
@@ -44,6 +44,7 @@ import binaryFileStorage.BinaryStore;
import Filters.FilterDialog;
import Filters.FilterParams;
import Localiser.detectionGroupLocaliser.GroupDetection;
+import PamController.PamConfiguration;
import PamController.PamControlledUnit;
import PamController.PamControlledUnitGUI;
import PamController.PamControlledUnitSettings;
@@ -97,6 +98,7 @@ import dataPlotsFX.data.TDDataProviderRegisterFX;
import detectionPlotFX.data.DDPlotRegister;
import detectionPlotFX.rawDDPlot.ClickDDPlotProvider;
import fftManager.fftorganiser.FFTDataOrganiser;
+import offlineProcessing.OfflineTaskGroup;
/**
* Main Controller for click detection.
@@ -207,9 +209,22 @@ public class ClickControl extends PamControlledUnit implements PamSettings {
public static final String UNITTYPE = "Click Detector";
+ /**
+ * Old style constructor which only gets a name
+ * @param name
+ */
public ClickControl(String name) {
+ this(null, name);
+ }
+
+ /**
+ * New style constructor which get a configuraiton and a name.
+ * @param pamConfiguration
+ * @param name
+ */
+ public ClickControl(PamConfiguration pamConfiguration, String name) {
- super(UNITTYPE, name);
+ super(pamConfiguration, UNITTYPE, name);
sortDataBlockPrefix();
@@ -220,7 +235,6 @@ public class ClickControl extends PamControlledUnit implements PamSettings {
// }
clickControl = this;
-
angleVetoes = new AngleVetoes(this);
offlineToolbar = new OfflineToolbar(this);
@@ -288,6 +302,9 @@ public class ClickControl extends PamControlledUnit implements PamSettings {
roccaControl = (RoccaControl) PamController.getInstance().findControlledUnit(RoccaControl.unitType);
}
+ else {
+ ClicksOffline.getOfflineTaskGroup(this);
+ }
if (PamGUIManager.isSwing()) {
@@ -988,6 +1005,19 @@ public class ClickControl extends PamControlledUnit implements PamSettings {
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
@@ -1187,7 +1217,8 @@ public class ClickControl extends PamControlledUnit implements PamSettings {
* @return
*/
public PamRawDataBlock findRawDataBlock() {
- return (PamController.getInstance().getRawDataBlock(clickParameters.getRawDataSource()));
+ return getPamConfiguration().getRawDataBlock(clickParameters.getRawDataSource());
+// return (PamController.getInstance().getRawDataBlock(clickParameters.getRawDataSource()));
}
diff --git a/src/clickDetector/ClickDetector.java b/src/clickDetector/ClickDetector.java
index d7330047..56b9481e 100644
--- a/src/clickDetector/ClickDetector.java
+++ b/src/clickDetector/ClickDetector.java
@@ -403,7 +403,7 @@ public class ClickDetector extends PamProcess {
// try to connect automatically to the acquisition module ...
// ArrayList rawBlocks =
// PamController.getInstance().getDataBlocks(RawDataUnit.class, false);
- AcquisitionControl daq = (AcquisitionControl) PamController.getInstance()
+ AcquisitionControl daq = (AcquisitionControl) clickControl.getPamConfiguration()
.findControlledUnit(AcquisitionControl.unitType);
if (daq != null) {
rawDataSource = daq.getRawDataBlock();
diff --git a/src/clickDetector/ClickSpectrum.java b/src/clickDetector/ClickSpectrum.java
index e0af7e1e..11c5c2ff 100644
--- a/src/clickDetector/ClickSpectrum.java
+++ b/src/clickDetector/ClickSpectrum.java
@@ -841,7 +841,7 @@ public class ClickSpectrum extends ClickDisplay implements PamObserver , PamSett
pt.x += 10;
pt.y += 20;
ClickSpectrumParams newParams = ClickSpectrumDialog.showDialog(
- clickControl.getPamView().getGuiFrame(), pt, this, clickSpectrumParams);
+ clickControl.getGuiFrame(), pt, this, clickSpectrumParams);
if (newParams != null) {
if (newParams.plotCepstrum) {
newParams.logScale = false;
@@ -859,7 +859,7 @@ public class ClickSpectrum extends ClickDisplay implements PamObserver , PamSett
pt.x += 10;
pt.y += 20;
ClickSpectrumTemplateParams newTempParams = ClickSpectrumTemplateEditDialog.showDialog(
- clickControl.getPamView().getGuiFrame(), pt, this, clickTemplateParams,clickControl);
+ clickControl.getGuiFrame(), pt, this, clickTemplateParams,clickControl);
if (newTempParams!=null){
clickTemplateParams = newTempParams.clone();
sortWestAxis();
@@ -873,7 +873,7 @@ public class ClickSpectrum extends ClickDisplay implements PamObserver , PamSett
pt.x += 10;
pt.y += 20;
ClickSpectrumTemplateParams newTempParams = ClickSpectrumTemplateDialog.showDialog(
- clickControl.getPamView().getGuiFrame(), pt, this, clickTemplateParams);
+ clickControl.getGuiFrame(), pt, this, clickTemplateParams);
if (newTempParams!=null){
clickTemplateParams = newTempParams.clone();
sortWestAxis();
diff --git a/src/clickDetector/ClickWaveform.java b/src/clickDetector/ClickWaveform.java
index aefc7bb1..95706258 100644
--- a/src/clickDetector/ClickWaveform.java
+++ b/src/clickDetector/ClickWaveform.java
@@ -765,7 +765,7 @@ public class ClickWaveform extends ClickDisplay implements PamObserver {
@Override
public void actionPerformed(ActionEvent arg0) {
- ClickParameters newParams = WaveDisplayDialog.showDialog(clickControl.getPamView().getGuiFrame(),
+ ClickParameters newParams = WaveDisplayDialog.showDialog(clickControl.getGuiFrame(),
clickWaveform, clickControl.clickParameters);
if (newParams != null) {
clickControl.clickParameters = newParams.clone();
diff --git a/src/clickDetector/IDI_Display.java b/src/clickDetector/IDI_Display.java
index e000d7fd..383fdf42 100644
--- a/src/clickDetector/IDI_Display.java
+++ b/src/clickDetector/IDI_Display.java
@@ -975,7 +975,7 @@ public class IDI_Display extends ClickDisplay implements PamObserver, PamSetting
pt.y -= 10;
pt.x += 10;
IDI_DisplayParams newParams = IDI_DisplayDialog.showDialog(
- clickControl.getPamView().getGuiFrame(), pt, idiParams);
+ clickControl.getGuiFrame(), pt, idiParams);
if (newParams != null) {
idiParams = newParams.clone();
setParameters();
diff --git a/src/clickDetector/WignerPlot.java b/src/clickDetector/WignerPlot.java
index 2398cd78..eb6c0375 100644
--- a/src/clickDetector/WignerPlot.java
+++ b/src/clickDetector/WignerPlot.java
@@ -248,7 +248,7 @@ public class WignerPlot extends ClickDisplay implements PamSettings {
pt.y -= 10;
pt.x += 10;
WignerPlotOptions newoptions = WignerPlotdialog.showDialog(
- clickControl.getPamView().getGuiFrame(), pt, wignerPlotOptions);
+ clickControl.getGuiFrame(), pt, wignerPlotOptions);
if (newoptions != null) {
wignerPlotOptions = newoptions.clone();
clickedOnClick(lastClick);
diff --git a/src/clickDetector/offlineFuncs/ClickDelayTask.java b/src/clickDetector/offlineFuncs/ClickDelayTask.java
index bb029b4b..0fb08d14 100644
--- a/src/clickDetector/offlineFuncs/ClickDelayTask.java
+++ b/src/clickDetector/offlineFuncs/ClickDelayTask.java
@@ -123,7 +123,7 @@ public class ClickDelayTask extends OfflineTask {
// clickControl.getClickParameters().setDelayMeasurementParams(0, newParams.clone());
// return true;
// }
- ClickParameters newParams = ClickDelayDialog.showDialog(clickControl.getPamView().getGuiFrame(), clickControl);
+ ClickParameters newParams = ClickDelayDialog.showDialog(clickControl.getGuiFrame(), clickControl);
if (newParams != null) {
clickControl.setClickParameters(newParams);
return true;
diff --git a/src/clickDetector/offlineFuncs/ClickReClassifyTask.java b/src/clickDetector/offlineFuncs/ClickReClassifyTask.java
index 911ea1b8..3758e4c7 100644
--- a/src/clickDetector/offlineFuncs/ClickReClassifyTask.java
+++ b/src/clickDetector/offlineFuncs/ClickReClassifyTask.java
@@ -75,7 +75,7 @@ public class ClickReClassifyTask extends OfflineTask {
@Override
public boolean callSettings() {
- return clickControl.classificationDialog(clickControl.getPamView().getGuiFrame());
+ return clickControl.classificationDialog(clickControl.getGuiFrame());
}
diff --git a/src/clickDetector/offlineFuncs/ClicksOffline.java b/src/clickDetector/offlineFuncs/ClicksOffline.java
index 4ee5ad25..4423c721 100644
--- a/src/clickDetector/offlineFuncs/ClicksOffline.java
+++ b/src/clickDetector/offlineFuncs/ClicksOffline.java
@@ -61,8 +61,6 @@ public class ClicksOffline {
private OfflineParameters offlineParameters = new OfflineParameters();
private OLProcessDialog clickOfflineDialog;
-
- private OfflineTaskGroup offlineTaskGroup;
public static final String ClickTypeLookupName = "OfflineRCEvents";
@@ -545,8 +543,8 @@ public class ClicksOffline {
*/
public void reAnalyseClicks() {
if (clickOfflineDialog == null) {
- clickOfflineDialog = new OLProcessDialog(clickControl.getPamView().getGuiFrame(),
- getOfflineTaskGroup(), "Click Reprocessing");
+ clickOfflineDialog = new OLProcessDialog(clickControl.getGuiFrame(),
+ getOfflineTaskGroup(clickControl), "Click Reprocessing");
}
clickOfflineDialog.setVisible(true);
}
@@ -576,8 +574,9 @@ public class ClicksOffline {
* Get / Create an offline task group for click re-processing.
* @return offline task group. Create if necessary
*/
- private OfflineTaskGroup getOfflineTaskGroup() {
- offlineTaskGroup = new OfflineTaskGroup(clickControl, "Click Reprocessing");
+ public static OfflineTaskGroup getOfflineTaskGroup(ClickControl clickControl) {
+
+ OfflineTaskGroup offlineTaskGroup = new OfflineTaskGroup(clickControl, "Click Reprocessing");
/**
* 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 dataList) {
- Window win = clickControl.getPamView().getGuiFrame();
+ Window win = clickControl.getGuiFrame();
OfflineEventDataUnit event = LabelClicksDialog.showDialog(win, clickControl, overlayMark, dataList);
if (event != null) {
notifyEventChanges(event);
@@ -625,7 +624,7 @@ public class ClicksOffline {
}
public void newEvent(OverlayMark overlayMark, List markedClicks) {
- Window win = clickControl.getPamView().getGuiFrame();
+ Window win = clickControl.getGuiFrame();
OfflineEventDataBlock offlineEventDataBlock = clickControl.getClickDetector().getOfflineEventDataBlock();
if (markedClicks == null) {
return;
@@ -692,7 +691,7 @@ public class ClicksOffline {
}
public void labelClick(OverlayMark overlayMark, PamDataUnit singleClick) {
- Window win = clickControl.getPamView().getGuiFrame();
+ Window win = clickControl.getGuiFrame();
OfflineEventDataUnit event = LabelClicksDialog.showDialog(win, clickControl, overlayMark, singleClick);
if (event != null) {
notifyEventChanges(event);
diff --git a/src/clickDetector/offlineFuncs/EchoDetectionTask.java b/src/clickDetector/offlineFuncs/EchoDetectionTask.java
index f7db4913..1b16b482 100644
--- a/src/clickDetector/offlineFuncs/EchoDetectionTask.java
+++ b/src/clickDetector/offlineFuncs/EchoDetectionTask.java
@@ -90,7 +90,7 @@ public class EchoDetectionTask extends OfflineTask {
if (echoDetectionSystem == null) {
return false;
}
- return EchoDialog.showDialog(clickControl.getPamView().getGuiFrame(), echoDetectionSystem);
+ return EchoDialog.showDialog(clickControl.getGuiFrame(), echoDetectionSystem);
}
/* (non-Javadoc)
diff --git a/src/clickTrainDetector/offline/ClickTrainOfflineProcess.java b/src/clickTrainDetector/offline/ClickTrainOfflineProcess.java
index cef170cb..067d60b4 100644
--- a/src/clickTrainDetector/offline/ClickTrainOfflineProcess.java
+++ b/src/clickTrainDetector/offline/ClickTrainOfflineProcess.java
@@ -84,7 +84,7 @@ public class ClickTrainOfflineProcess {
//if null open the dialog- also create a new offlineTask group if the datablock has changed.
if (clickTrainDialog == null) {
- clickTrainDialog = new CTProcessDialog(this.clickTrainControl.getPamView().getGuiFrame(),
+ clickTrainDialog = new CTProcessDialog(this.clickTrainControl.getGuiFrame(),
clickTrainOfflineGroup, "Click Train Detection");
//batchLocaliseDialog.setModalityType(Dialog.ModalityType.MODELESS);
}
diff --git a/src/dbht/DbHtControl.java b/src/dbht/DbHtControl.java
index cd561034..4774e2f9 100644
--- a/src/dbht/DbHtControl.java
+++ b/src/dbht/DbHtControl.java
@@ -122,7 +122,7 @@ public class DbHtControl extends PamControlledUnit implements PamSettings {
offlineTaskGroup.addTask(task);
}
if (olProcessDialog == null) {
- olProcessDialog = new OLProcessDialog(getPamView().getGuiFrame(), offlineTaskGroup, "dBHt Data Export");
+ olProcessDialog = new OLProcessDialog(getGuiFrame(), offlineTaskGroup, "dBHt Data Export");
}
olProcessDialog.setVisible(true);
}
diff --git a/src/difar/DifarControl.java b/src/difar/DifarControl.java
index cb92d3d7..1e1baf49 100644
--- a/src/difar/DifarControl.java
+++ b/src/difar/DifarControl.java
@@ -455,7 +455,7 @@ public class DifarControl extends PamControlledUnit implements PamSettings {
// offlineTaskGroup.addTask(task);
}
OLProcessDialog olProcessDialog;
- olProcessDialog = new OLProcessDialog(getPamView().getGuiFrame(), offlineTaskGroup, "DIFAR Data Export");
+ olProcessDialog = new OLProcessDialog(getGuiFrame(), offlineTaskGroup, "DIFAR Data Export");
olProcessDialog.setVisible(true);
}
diff --git a/src/fftManager/PamFFTControl.java b/src/fftManager/PamFFTControl.java
index 62d747a8..ef73f913 100644
--- a/src/fftManager/PamFFTControl.java
+++ b/src/fftManager/PamFFTControl.java
@@ -37,6 +37,7 @@ import fftManager.layoutFX.FFTGuiFX;
//import fftManager.layoutFX.FFTGuiFX;
import fftManager.newSpectrogram.SpectrogramPlotProvider;
import spectrogramNoiseReduction.SpectrogramNoiseProcess;
+import PamController.PamConfiguration;
import PamController.PamControlledUnit;
import PamController.PamControlledUnitGUI;
import PamController.PamControlledUnitSettings;
@@ -70,7 +71,11 @@ public class PamFFTControl extends PamControlledUnit implements PamSettings {
private PamControlledGUISwing fftGUISwing;
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().
getRawDataBlock(fftParameters.dataSource);
diff --git a/src/fftManager/PamFFTProcess.java b/src/fftManager/PamFFTProcess.java
index b7dde70f..34b45371 100644
--- a/src/fftManager/PamFFTProcess.java
+++ b/src/fftManager/PamFFTProcess.java
@@ -144,10 +144,10 @@ public class PamFFTProcess extends PamProcess {
* name has not been set, so if there isn't a name, use the number !
*/
if (fftParameters.dataSourceName != null) {
- rawDataBlock = (PamRawDataBlock) PamController.getInstance().getDataBlock(RawDataUnit.class, fftParameters.dataSourceName);
+ rawDataBlock = (PamRawDataBlock) fftControl.getPamConfiguration().getDataBlock(RawDataUnit.class, fftParameters.dataSourceName);
}
else {
- rawDataBlock = PamController.getInstance().getRawDataBlock(fftParameters.dataSource);
+ rawDataBlock = fftControl.getPamConfiguration().getRawDataBlock(fftParameters.dataSource);
if (rawDataBlock != null) {
fftParameters.dataSourceName = rawDataBlock.getDataName();
}
diff --git a/src/generalDatabase/DBControl.java b/src/generalDatabase/DBControl.java
index 525020e7..7e229fee 100644
--- a/src/generalDatabase/DBControl.java
+++ b/src/generalDatabase/DBControl.java
@@ -32,6 +32,7 @@ import offlineProcessing.OLProcessDialog;
import offlineProcessing.OfflineTaskGroup;
import warnings.PamWarning;
import warnings.WarningSystem;
+import PamController.PamConfiguration;
import PamController.PamControlledUnit;
import PamController.PamControlledUnitGUI;
import PamController.PamControlledUnitSettings;
@@ -109,8 +110,8 @@ PamSettingsSource {
private int lastErrorCount;
- public DBControl(String unitName, int settingsStore, boolean openImmediately) {
- super(dbUnitType, unitName);
+ public DBControl(PamConfiguration pamconfiguration, String unitName, int settingsStore, boolean openImmediately) {
+ super(pamconfiguration, dbUnitType, unitName);
THIS = this;
databaseWarning = new PamWarning(getUnitName(), "Database error", 2);
@@ -157,6 +158,9 @@ PamSettingsSource {
// selectDatabase(null);
+ if (isInMainConfiguration() == false) {
+ openImmediately = false;
+ }
if (databaseSystem == null){
selectSystem(dbParameters.getDatabaseSystem(), openImmediately);
}
@@ -529,7 +533,7 @@ PamSettingsSource {
// offlineTaskGroup.addTask(task);
}
if (olProcessDialog == null) {
- olProcessDialog = new OLProcessDialog(getPamView().getGuiFrame(), offlineTaskGroup,
+ olProcessDialog = new OLProcessDialog(getGuiFrame(), offlineTaskGroup,
dataBlock.getDataName() + " Export");
}
olProcessDialog.setVisible(true);
diff --git a/src/generalDatabase/DBControlSettings.java b/src/generalDatabase/DBControlSettings.java
index 6647f7c3..3d9c6fb5 100644
--- a/src/generalDatabase/DBControlSettings.java
+++ b/src/generalDatabase/DBControlSettings.java
@@ -18,7 +18,7 @@ public class DBControlSettings extends DBControl {
public DBControlSettings(String unitName) {
- super(unitName, PamSettingManager.LIST_DATABASESTUFF, false);
+ super(null, unitName, PamSettingManager.LIST_DATABASESTUFF, false);
// logSettings = new LogSettings(this);
diff --git a/src/generalDatabase/DBControlUnit.java b/src/generalDatabase/DBControlUnit.java
index ff310652..f3bc4b37 100644
--- a/src/generalDatabase/DBControlUnit.java
+++ b/src/generalDatabase/DBControlUnit.java
@@ -20,6 +20,7 @@ import pamViewFX.pamTask.PamTaskUpdate;
import PamController.AWTScheduler;
import PamController.DataOutputStore;
import PamController.OfflineDataStore;
+import PamController.PamConfiguration;
import PamController.PamControlledUnit;
import PamController.PamController;
import PamController.PamControllerInterface;
@@ -51,7 +52,10 @@ public class DBControlUnit extends DBControl implements DataOutputStore {
private BackupInformation backupInformation;
public DBControlUnit(String unitName) {
- super(unitName, whichStore(), true);
+ this(null, unitName);
+ }
+ public DBControlUnit(PamConfiguration pamConfiguration, String unitName) {
+ super(pamConfiguration, unitName, whichStore(), true);
THIS = this;
setFullTablesCheck(true);
// int runMode = PamController.getInstance().getRunMode();
diff --git a/src/generalDatabase/SQLLogging.java b/src/generalDatabase/SQLLogging.java
index 8e4cc4e5..e9c094ed 100644
--- a/src/generalDatabase/SQLLogging.java
+++ b/src/generalDatabase/SQLLogging.java
@@ -1041,6 +1041,9 @@ public abstract class SQLLogging {
* @return a result set
*/
protected ResultSet createViewResultSet(PamConnection con, PamViewParameters pamViewParameters) {
+ if (con == null) {
+ return null;
+ }
String viewerClause = getViewerLoadClause(con.getSqlTypes(), pamViewParameters);
return createViewResultSet(con, viewerClause);
}
diff --git a/src/matchedTemplateClassifer/offline/MTOfflineProcess.java b/src/matchedTemplateClassifer/offline/MTOfflineProcess.java
index 69ae30a0..0fee2df7 100644
--- a/src/matchedTemplateClassifer/offline/MTOfflineProcess.java
+++ b/src/matchedTemplateClassifer/offline/MTOfflineProcess.java
@@ -70,7 +70,7 @@ public class MTOfflineProcess {
//if null open the dialog- also create a new offlineTask group if the datablock has changed.
if (mtOfflineDialog == null) {
- mtOfflineDialog = new OLProcessDialog(this.mtContorl.getPamView().getGuiFrame(),
+ mtOfflineDialog = new OLProcessDialog(this.mtContorl.getGuiFrame(),
mtOfflineGroup, "Match Template Classifier");
//batchLocaliseDialog.setModalityType(Dialog.ModalityType.MODELESS);
}
diff --git a/src/noiseBandMonitor/NoiseBandProcess.java b/src/noiseBandMonitor/NoiseBandProcess.java
index 9adad329..744f71b1 100644
--- a/src/noiseBandMonitor/NoiseBandProcess.java
+++ b/src/noiseBandMonitor/NoiseBandProcess.java
@@ -62,7 +62,7 @@ public class NoiseBandProcess extends PamProcess {
public void 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) {
return;
}
diff --git a/src/noiseMonitor/NoiseProcess.java b/src/noiseMonitor/NoiseProcess.java
index 8b3022c4..a984030d 100644
--- a/src/noiseMonitor/NoiseProcess.java
+++ b/src/noiseMonitor/NoiseProcess.java
@@ -129,7 +129,7 @@ public class NoiseProcess extends PamProcess {
}
private void findDataSource() {
- PamDataBlock source = PamController.getInstance().getDataBlock(FFTDataUnit.class,
+ PamDataBlock source = noiseControl.getPamConfiguration().getDataBlock(FFTDataUnit.class,
noiseControl.noiseSettings.dataSource);
daqProcess = null;
diff --git a/src/noiseMonitor/NoiseTabPanel.java b/src/noiseMonitor/NoiseTabPanel.java
index f6df1896..460b36ec 100644
--- a/src/noiseMonitor/NoiseTabPanel.java
+++ b/src/noiseMonitor/NoiseTabPanel.java
@@ -1189,7 +1189,7 @@ private void setAxisLabels() {
if (mouseMenu == null) {
mouseMenu = new JPopupMenu();
JMenuItem menuItem = new JMenuItem("Display Options ...");
- menuItem.addActionListener(new DisplayOptions(pamControlledUnit.getPamView().getGuiFrame()));
+ menuItem.addActionListener(new DisplayOptions(pamControlledUnit.getGuiFrame()));
mouseMenu.add(menuItem);
}
diff --git a/src/noiseOneBand/OneBandControl.java b/src/noiseOneBand/OneBandControl.java
index bf011340..c14fae48 100644
--- a/src/noiseOneBand/OneBandControl.java
+++ b/src/noiseOneBand/OneBandControl.java
@@ -126,7 +126,7 @@ public class OneBandControl extends PamControlledUnit implements PamSettings {
offlineTaskGroup.addTask(task);
}
if (olProcessDialog == null) {
- olProcessDialog = new OLProcessDialog(getPamView().getGuiFrame(), offlineTaskGroup, "Noise Data Export");
+ olProcessDialog = new OLProcessDialog(getGuiFrame(), offlineTaskGroup, "Noise Data Export");
}
olProcessDialog.setVisible(true);
}
diff --git a/src/radardisplay/RadarDisplay.java b/src/radardisplay/RadarDisplay.java
index d919e3d4..879ff75b 100644
--- a/src/radardisplay/RadarDisplay.java
+++ b/src/radardisplay/RadarDisplay.java
@@ -123,7 +123,7 @@ public class RadarDisplay extends UserFramePlots implements PamObserver, PamSett
if (this.radarParameters == null) {
this.radarParameters = new RadarParameters();
RadarParameters newParams = RadarParametersDialog.showDialog(RadarDisplay.this,
- userDisplayControl.getPamView().getGuiFrame(), this.radarParameters, radarProjector);
+ userDisplayControl.getGuiFrame(), this.radarParameters, radarProjector);
if (newParams != null) {
this.radarParameters = newParams.clone();
}
@@ -697,7 +697,7 @@ public class RadarDisplay extends UserFramePlots implements PamObserver, PamSett
public void actionPerformed(ActionEvent e) {
RadarParameters newParams = RadarParametersDialog.showDialog(RadarDisplay.this,
- userDisplayControl.getPamView().getGuiFrame(), radarParameters, radarProjector);
+ userDisplayControl.getGuiFrame(), radarParameters, radarProjector);
if (newParams != null) {
radarParameters = newParams.clone();
newSettings();
diff --git a/src/rawDeepLearningClassifier/offline/DLOfflineProcess.java b/src/rawDeepLearningClassifier/offline/DLOfflineProcess.java
index 52cfa004..07270632 100644
--- a/src/rawDeepLearningClassifier/offline/DLOfflineProcess.java
+++ b/src/rawDeepLearningClassifier/offline/DLOfflineProcess.java
@@ -56,7 +56,7 @@ public class DLOfflineProcess {
//if null open the dialog- also create a new offlineTask group if the datablock has changed.
if (mtOfflineDialog == null) {
- mtOfflineDialog = new OLProcessDialog(this.dlControl.getPamView().getGuiFrame(),
+ mtOfflineDialog = new OLProcessDialog(this.dlControl.getGuiFrame(),
dlOfflineGroup, "Deep Learning Classifier");
//batchLocaliseDialog.setModalityType(Dialog.ModalityType.MODELESS);
}
diff --git a/src/spectrogramNoiseReduction/SpectrogramNoiseControl.java b/src/spectrogramNoiseReduction/SpectrogramNoiseControl.java
index cbaa23b0..f884a242 100644
--- a/src/spectrogramNoiseReduction/SpectrogramNoiseControl.java
+++ b/src/spectrogramNoiseReduction/SpectrogramNoiseControl.java
@@ -6,6 +6,7 @@ import java.awt.event.ActionListener;
import java.io.Serializable;
import javax.swing.JMenuItem;
+import PamController.PamConfiguration;
import PamController.PamControlledUnit;
import PamController.PamControlledUnitSettings;
import PamController.PamControllerInterface;
@@ -22,7 +23,10 @@ public class SpectrogramNoiseControl extends PamControlledUnit implements PamSet
protected SpectrogramNoiseProcess spectrogramNoiseProcess;
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);
addPamProcess(spectrogramNoiseProcess);
diff --git a/src/spectrogramNoiseReduction/SpectrogramNoiseProcess.java b/src/spectrogramNoiseReduction/SpectrogramNoiseProcess.java
index d1fbf34f..480adc5e 100644
--- a/src/spectrogramNoiseReduction/SpectrogramNoiseProcess.java
+++ b/src/spectrogramNoiseReduction/SpectrogramNoiseProcess.java
@@ -15,6 +15,7 @@ import spectrogramNoiseReduction.threshold.ThresholdParams;
import fftManager.FFTDataBlock;
import fftManager.FFTDataUnit;
+import PamController.PamConfiguration;
import PamController.PamControlledUnit;
import PamController.PamController;
import PamUtils.complex.ComplexArray;
@@ -64,7 +65,11 @@ public class SpectrogramNoiseProcess extends PamProcess {
@Override
public void 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);
setParentDataBlock(sourceData);
diff --git a/src/targetMotionModule/TargetMotionLocaliser.java b/src/targetMotionModule/TargetMotionLocaliser.java
index 359da442..6791d819 100644
--- a/src/targetMotionModule/TargetMotionLocaliser.java
+++ b/src/targetMotionModule/TargetMotionLocaliser.java
@@ -64,7 +64,7 @@ public class TargetMotionLocaliser extends AbstractLocali
// public boolean showTMDialog(T dataUnit) {
// if (targetMotionMainPanel == null) {
-////targetMotionDialog = new TargetMotionMainPanel(pamControlledUnit.getPamView().getGuiFrame(), this);
+////targetMotionDialog = new TargetMotionMainPanel(pamControlledUnit.getGuiFrame(), this);
// }
// targetMotionMainPanel.updateCurrentControlPanel();
// return true;
diff --git a/src/targetMotionModule/offline/TMOfflineFunctions.java b/src/targetMotionModule/offline/TMOfflineFunctions.java
index 7e0b92ed..86d5af80 100644
--- a/src/targetMotionModule/offline/TMOfflineFunctions.java
+++ b/src/targetMotionModule/offline/TMOfflineFunctions.java
@@ -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
if (batchLocaliseDialog == null || currentDataBlock!=targetMotionControl.getCurrentDataBlock()) {
- batchLocaliseDialog = new TMOLProcessDialog(targetMotionControl.getPamView().getGuiFrame(),
+ batchLocaliseDialog = new TMOLProcessDialog(targetMotionControl.getGuiFrame(),
getOfflineTaskGroup(), "Batch Localise");
//batchLocaliseDialog.setModalityType(Dialog.ModalityType.MODELESS);
}
diff --git a/src/targetMotionOld/TargetMotionLocaliser.java b/src/targetMotionOld/TargetMotionLocaliser.java
index fa3f7a2b..dc0c6321 100644
--- a/src/targetMotionOld/TargetMotionLocaliser.java
+++ b/src/targetMotionOld/TargetMotionLocaliser.java
@@ -153,7 +153,7 @@ public class TargetMotionLocaliser extends AbstractLoc
public boolean showTMDialog(T dataUnit) {
if (targetMotionDialog == null) {
- targetMotionDialog = new TargetMotionDialog(pamControlledUnit.getPamView().getGuiFrame(), this);
+ targetMotionDialog = new TargetMotionDialog(pamControlledUnit.getGuiFrame(), this);
}
targetMotionDialog.updateEventList();
targetMotionDialog.setDataUnit(dataUnit);
diff --git a/src/videoRangePanel/VRControl.java b/src/videoRangePanel/VRControl.java
index 9357737b..a8225eeb 100644
--- a/src/videoRangePanel/VRControl.java
+++ b/src/videoRangePanel/VRControl.java
@@ -1,6 +1,7 @@
package videoRangePanel;
import java.util.List;
+import java.awt.Frame;
import java.awt.Point;
import java.io.File;
import java.io.Serializable;
@@ -361,9 +362,9 @@ public class VRControl extends PamControlledUnit implements PamSettings {
* @param frame
* @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) {
- frame = getPamView().getGuiFrame();
+ frame = getGuiFrame();
}
VRParameters newParams = VRParametersDialog.showDialog(frame, this, tab);
if (newParams != null) {
diff --git a/src/videoRangePanel/importTideData/TideManager.java b/src/videoRangePanel/importTideData/TideManager.java
index cd769dc8..593a4c45 100644
--- a/src/videoRangePanel/importTideData/TideManager.java
+++ b/src/videoRangePanel/importTideData/TideManager.java
@@ -105,7 +105,7 @@ public class TideManager extends DataImport {
// }
// 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;
// }
diff --git a/src/videoRangePanel/layoutAWT/VRSidePanel.java b/src/videoRangePanel/layoutAWT/VRSidePanel.java
index c8d943d2..fc1fb6bc 100644
--- a/src/videoRangePanel/layoutAWT/VRSidePanel.java
+++ b/src/videoRangePanel/layoutAWT/VRSidePanel.java
@@ -179,7 +179,7 @@ public class VRSidePanel implements PamSidePanel {
}
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;
}
vrControl.loadFile(vrControl.getVRParams().currentImageFile);
diff --git a/src/videoRangePanel/layoutFX/VRDisplayFX.java b/src/videoRangePanel/layoutFX/VRDisplayFX.java
index 74c7e596..d43850b6 100644
--- a/src/videoRangePanel/layoutFX/VRDisplayFX.java
+++ b/src/videoRangePanel/layoutFX/VRDisplayFX.java
@@ -221,7 +221,7 @@ public class VRDisplayFX extends PamBorderPane implements VRPane {
}
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;
}
//go back up a few levels to load file as update flags etc need to be triggerred.
diff --git a/src/whistlesAndMoans/WhistleMoanControl.java b/src/whistlesAndMoans/WhistleMoanControl.java
index ad72ead7..3a94f629 100644
--- a/src/whistlesAndMoans/WhistleMoanControl.java
+++ b/src/whistlesAndMoans/WhistleMoanControl.java
@@ -19,6 +19,7 @@ import detectionPlotFX.whistleDDPlot.WhistleDDPlotProvider;
import spectrogramNoiseReduction.SpectrogramNoiseProcess;
import whistlesAndMoans.layoutFX.WhistleMoanGUIFX;
import whistlesAndMoans.plots.WhistlePlotProvider;
+import PamController.PamConfiguration;
import PamController.PamControlledUnit;
import PamController.PamControlledUnitGUI;
import PamController.PamControlledUnitSettings;
@@ -55,7 +56,10 @@ public class WhistleMoanControl extends PamControlledUnit implements PamSettings
public static final String UNITTYPE = "WhistlesMoans";
public WhistleMoanControl(String unitName) {
- super(UNITTYPE, unitName);
+ this(null, unitName);
+ }
+ public WhistleMoanControl(PamConfiguration pamConfiguration, String unitName) {
+ super(pamConfiguration, UNITTYPE, unitName);
spectrogramNoiseProcess = new SpectrogramNoiseProcess(this);
addPamProcess(spectrogramNoiseProcess);
diff --git a/src/whistlesAndMoans/WhistleToneConnectProcess.java b/src/whistlesAndMoans/WhistleToneConnectProcess.java
index 4dc46295..c95f69ab 100644
--- a/src/whistlesAndMoans/WhistleToneConnectProcess.java
+++ b/src/whistlesAndMoans/WhistleToneConnectProcess.java
@@ -201,36 +201,20 @@ public class WhistleToneConnectProcess extends PamProcess {
@Override
public void setupProcess() {
super.setupProcess();
+
SpectrogramNoiseProcess snp = whistleMoanControl.getSpectrogramNoiseProcess();
setParentDataBlock(snp.getOutputDataBlock());
if (whistleMoanControl.whistleToneParameters.getDataSource() == null) {
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
SpectrogramNoiseSettings specnoiseSettings = whistleMoanControl.whistleToneParameters.getSpecNoiseSettings();
specnoiseSettings.dataSource = whistleMoanControl.whistleToneParameters.getDataSource();
snp.setNoiseSettings(specnoiseSettings);
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
boolean mayBearings = whistleMoanControl.whistleToneParameters.mayHaveBearings();
boolean mayRange = whistleMoanControl.whistleToneParameters.mayHaveRange();