From e45691b6d540549367e6760f84b87f16cb376098 Mon Sep 17 00:00:00 2001 From: Slav Korolev Date: Thu, 30 Jan 2014 11:43:16 -0500 Subject: [PATCH] Issue #2757. Fixed issues in Area Configuration Dialogs. Change-Id: Ic3d3d5c41df6c8d80aac8e434e4c42a5ef9d1ecf Former-commit-id: b0ce18a8bf77d27ab36642be81a8c7af0dc6cbb8 [formerly 7b3702c1866c76031d13833ee89d82f9d73f5729] [formerly 6013121a9915e9d4aef2e37e439d92974cd61124] [formerly 6013121a9915e9d4aef2e37e439d92974cd61124 [formerly ea573d2c30306247ae7c83f025c9676aa11a320d]] [formerly a768f540f01a58d0c8d85685a6c0460ce009fd1e [formerly 6013121a9915e9d4aef2e37e439d92974cd61124 [formerly ea573d2c30306247ae7c83f025c9676aa11a320d] [formerly a768f540f01a58d0c8d85685a6c0460ce009fd1e [formerly 81826338bda946aff4ac8a7b9ea83c2eb72397d5]]]] Former-commit-id: a768f540f01a58d0c8d85685a6c0460ce009fd1e Former-commit-id: 6483fb5be1915744c3badb428f9abfd2df744293 [formerly a981a42007f76a4e25e017ce265ad6fb22a436d4] [formerly d2d4672a46805b88f657d8b0804d8f77a5fb2a2f [formerly 6d9a066c36c9d8cc7049b26d00b1425a1b3029b3]] Former-commit-id: d2d4672a46805b88f657d8b0804d8f77a5fb2a2f Former-commit-id: f6ea436e80742ae5dd3f6d870a8f4e2c46e8403f --- .../fog/threshold/FogThresholdMgr.java | 78 ++++---- .../dialogs/FogMonitoringAreaConfigDlg.java | 64 ++++-- .../safeseas/threshold/SSThresholdMgr.java | 181 +++++++++-------- .../ui/dialogs/SSMonitoringAreaConfigDlg.java | 80 +++++--- .../snow/threshold/SnowThresholdMgr.java | 182 +++++++++--------- .../dialogs/SnowMonitoringAreaConfigDlg.java | 68 ++++--- .../ui/dialogs/MonitoringAreaConfigDlg.java | 109 ++++++----- 7 files changed, 408 insertions(+), 354 deletions(-) diff --git a/cave/com.raytheon.uf.viz.monitor.fog/src/com/raytheon/uf/viz/monitor/fog/threshold/FogThresholdMgr.java b/cave/com.raytheon.uf.viz.monitor.fog/src/com/raytheon/uf/viz/monitor/fog/threshold/FogThresholdMgr.java index 19cb4755ee..94415d8e3d 100644 --- a/cave/com.raytheon.uf.viz.monitor.fog/src/com/raytheon/uf/viz/monitor/fog/threshold/FogThresholdMgr.java +++ b/cave/com.raytheon.uf.viz.monitor.fog/src/com/raytheon/uf/viz/monitor/fog/threshold/FogThresholdMgr.java @@ -33,20 +33,20 @@ import com.raytheon.uf.viz.monitor.util.MonitorConfigConstants.FogMonitor; * This class manages the FOG thresholds for display and monitor. * *
- *
+ * 
  * SOFTWARE HISTORY
- *
+ * 
  * Date         Ticket#    Engineer    Description
  * ------------ ---------- ----------- --------------------------
  * Dec 15, 2009 #3963      lvenable     Initial creation
- *
+ * Feb 03, 2014 #2757      skorolev     Fixed reInitialize()
+ * 
  * 
- * + * * @author lvenable * @version 1.0 */ -public class FogThresholdMgr extends AbstractThresholdMgr -{ +public class FogThresholdMgr extends AbstractThresholdMgr { /** * Class instance. */ @@ -55,75 +55,67 @@ public class FogThresholdMgr extends AbstractThresholdMgr /** * Private constructor. */ - private FogThresholdMgr() - { + private FogThresholdMgr() { super("DefaultFogDisplayThresholds.xml", - "DefaultFogMonitorThresholds.xml", - "fog"); - + "DefaultFogMonitorThresholds.xml", "fog"); + areaConfigMgr = getAreaConfigMgr(); - init(); // call init() after areaConfigMgr is set + init(); // call init() after areaConfigMgr is set } - + /** * Get an instance of the manager class. + * * @return Class instance. */ - public static FogThresholdMgr getInstance() - { - if (classInstance == null) - { + public static FogThresholdMgr getInstance() { + if (classInstance == null) { classInstance = new FogThresholdMgr(); } - + return classInstance; } /** - * DR#11279: - * When monitor area configuration is changed, - * threshold manager needs to be re-initialized - * using the new monitor area configuration + * DR#11279: When monitor area configuration is changed, threshold manager + * needs to be re-initialized using the new monitor area configuration */ public static void reInitialize() { - if ( classInstance != null ) { - classInstance = null; - classInstance = new FogThresholdMgr(); - } + if (classInstance != null) { + classInstance = null; + } + classInstance = new FogThresholdMgr(); + // Update threshold file. + classInstance.loadDefaultMonitorThreshold(); + classInstance.saveMonitorThresholds(); } @Override - protected ArrayList getThresholdKeys(DataUsageKey dataUsage) - { + protected ArrayList getThresholdKeys(DataUsageKey dataUsage) { ArrayList threshKeys = new ArrayList(); - - if (dataUsage == DataUsageKey.DISPLAY) - { - for (FogDisplay fogDisp : FogDisplay.values()) - { + + if (dataUsage == DataUsageKey.DISPLAY) { + for (FogDisplay fogDisp : FogDisplay.values()) { threshKeys.add(fogDisp.getXmlKey()); } - } - else if (dataUsage == DataUsageKey.MONITOR) - { - for (FogMonitor fogMon : FogMonitor.values()) - { + } else if (dataUsage == DataUsageKey.MONITOR) { + for (FogMonitor fogMon : FogMonitor.values()) { threshKeys.add(fogMon.getXmlKey()); } } - + return threshKeys; } - @Override - public MonitorConfigurationManager getAreaConfigMgr() { + @Override + public MonitorConfigurationManager getAreaConfigMgr() { if (areaConfigMgr == null) { LocalizationManager mgr = LocalizationManager.getInstance(); String siteScope = mgr.getCurrentSite(); - + areaConfigMgr = FogMonitorConfigurationManager.getInstance(); areaConfigMgr.readConfigXml(siteScope); } return areaConfigMgr; - } + } } diff --git a/cave/com.raytheon.uf.viz.monitor.fog/src/com/raytheon/uf/viz/monitor/fog/ui/dialogs/FogMonitoringAreaConfigDlg.java b/cave/com.raytheon.uf.viz.monitor.fog/src/com/raytheon/uf/viz/monitor/fog/ui/dialogs/FogMonitoringAreaConfigDlg.java index 679e678cc6..5ea6744e5d 100644 --- a/cave/com.raytheon.uf.viz.monitor.fog/src/com/raytheon/uf/viz/monitor/fog/ui/dialogs/FogMonitoringAreaConfigDlg.java +++ b/cave/com.raytheon.uf.viz.monitor.fog/src/com/raytheon/uf/viz/monitor/fog/ui/dialogs/FogMonitoringAreaConfigDlg.java @@ -40,6 +40,7 @@ import com.raytheon.uf.viz.monitor.ui.dialogs.MonitoringAreaConfigDlg; * ------------ ---------- ----------- -------------------------- * Jan 5, 2010 mpduff Initial creation * Nov 27, 2012 1351 skorolev Changes for non-blocking dialog. + * Jan 29, 2014 2757 skorolev Changed OK button handler. * * * @@ -53,6 +54,9 @@ public class FogMonitoringAreaConfigDlg extends MonitoringAreaConfigDlg { readConfigData(); } + private FogMonitorConfigurationManager configManager = FogMonitorConfigurationManager + .getInstance(); + /* * (non-Javadoc) * @@ -61,19 +65,23 @@ public class FogMonitoringAreaConfigDlg extends MonitoringAreaConfigDlg { */ @Override protected void handleOkBtnSelection() { - FogMonitorConfigurationManager configManager = FogMonitorConfigurationManager - .getInstance(); // Check for changes in the data if (!configManager.getAddedZones().isEmpty() - || !configManager.getAddedZones().isEmpty()) { + || !configManager.getAddedStations().isEmpty() + || this.timeWindowChanged || this.shipDistanceChanged + || this.fogChkChanged || this.maZonesRemoved) { int choice = showMessage(shell, SWT.OK | SWT.CANCEL, "Fog Monitor Confirm Changes", "Want to Update Fog Monitor's Setup files?"); if (choice == SWT.OK) { // Save the config xml file - configManager.setShipDistance(distanceScale.getSelection()); - configManager.setTimeWindow(timeScale.getSelection()); + configManager.setTimeWindow(timeWindow.getSelection()); + this.timeWindowChanged = false; + configManager.setShipDistance(shipDistance.getSelection()); + this.shipDistanceChanged = false; configManager.setUseAlgorithms(fogChk.getSelection()); + this.fogChkChanged = false; + this.maZonesRemoved = false; configManager.saveConfigData(); /** * DR#11279: re-initialize threshold manager and the monitor @@ -82,18 +90,18 @@ public class FogMonitoringAreaConfigDlg extends MonitoringAreaConfigDlg { FogThresholdMgr.reInitialize(); FogMonitor.reInitialize(); - String message = "New zones have been added, the display " - + "thresholds for the new zones are set to " - + "default values, you may edit them with the display " - + "thresholds editor which can be launched from Fog Monitor " - + "zone table.\n\nIf Fog Monitor is running anywhere within " - + "the office, clear it.\n"; - - showMessage(shell, SWT.ICON_INFORMATION | SWT.OK, - "Fog Monitor Confirm Changes", message); - if ((!configManager.getAddedZones().isEmpty()) - || (!configManager.getAddedZones().isEmpty())) { + || (!configManager.getAddedStations().isEmpty())) { + String message = "New zones have been added, the display " + + "thresholds for the new zones are set to " + + "default values, you may edit them with the display " + + "thresholds editor which can be launched from Fog Monitor " + + "zone table.\n\nIf Fog Monitor is running anywhere within " + + "the office, clear it.\n"; + + showMessage(shell, SWT.ICON_INFORMATION | SWT.OK, + "Fog Monitor Confirm Changes", message); + String message2 = "New zones have been added, and their monitoring thresholds " + "have been set to default values; would you like to modify " + "their threshold values now?"; @@ -105,6 +113,8 @@ public class FogMonitoringAreaConfigDlg extends MonitoringAreaConfigDlg { DataUsageKey.MONITOR); fogMonitorDlg.open(); } + configManager.getAddedZones().clear(); + configManager.getAddedStations().clear(); } } } else { @@ -114,9 +124,9 @@ public class FogMonitoringAreaConfigDlg extends MonitoringAreaConfigDlg { if (yesno == SWT.NO) { return; } + setReturnValue(true); + close(); } - setReturnValue(true); - close(); } /* @@ -140,8 +150,22 @@ public class FogMonitoringAreaConfigDlg extends MonitoringAreaConfigDlg { */ @Override protected void readConfigData() { - FogMonitorConfigurationManager configManager = FogMonitorConfigurationManager - .getInstance(); configManager.readConfigXml(currentSite); } + + /* + * (non-Javadoc) + * + * @see + * com.raytheon.uf.viz.monitor.ui.dialogs.MonitoringAreaConfigDlg#setValues + * () + */ + @Override + protected void setValues() { + timeWindow.setSelection(configManager.getTimeWindow()); + setTimeScaleLabel(); + shipDistance.setSelection(configManager.getShipDistance()); + setShipDistScaleLabel(); + fogChk.setSelection(configManager.isUseAlgorithms()); + } } diff --git a/cave/com.raytheon.uf.viz.monitor.safeseas/src/com/raytheon/uf/viz/monitor/safeseas/threshold/SSThresholdMgr.java b/cave/com.raytheon.uf.viz.monitor.safeseas/src/com/raytheon/uf/viz/monitor/safeseas/threshold/SSThresholdMgr.java index bedbd5eeaf..7d44b69fed 100644 --- a/cave/com.raytheon.uf.viz.monitor.safeseas/src/com/raytheon/uf/viz/monitor/safeseas/threshold/SSThresholdMgr.java +++ b/cave/com.raytheon.uf.viz.monitor.safeseas/src/com/raytheon/uf/viz/monitor/safeseas/threshold/SSThresholdMgr.java @@ -33,140 +33,131 @@ import com.raytheon.uf.viz.monitor.util.MonitorConfigConstants.SafeSeasMonitor; * This class manages the SafeSeas thresholds for display and monitor. * *
- *
+ * 
  * SOFTWARE HISTORY
- *
+ * 
  * Date         Ticket#    Engineer    Description
  * ------------ ---------- ----------- --------------------------
  * Dec 27, 2009 #3963      lvenable     Initial creation
- *
+ * Feb 03, 2014 #2757      skorolev     Fixed reInitialize()
+ * 
  * 
- * + * * @author lvenable * @version 1.0 */ -public class SSThresholdMgr extends AbstractThresholdMgr -{ +public class SSThresholdMgr extends AbstractThresholdMgr { private static SSThresholdMgr classInstance; - - private SSThresholdMgr() - { + + private SSThresholdMgr() { super("DefaultSSDisplayThresholds.xml", - "DefaultSSMonitorThresholds.xml", - "safeseas"); + "DefaultSSMonitorThresholds.xml", "safeseas"); areaConfigMgr = getAreaConfigMgr(); init(); // call init() after areaConfigMgr is set } - - public static SSThresholdMgr getInstance() - { - if (classInstance == null) - { + + public static SSThresholdMgr getInstance() { + if (classInstance == null) { classInstance = new SSThresholdMgr(); } - + return classInstance; } - + /** - * DR#11279: - * When monitor area configuration is changed, - * threshold manager needs to be re-initialized - * using the new monitor area configuration + * DR#11279: When monitor area configuration is changed, threshold manager + * needs to be re-initialized using the new monitor area configuration */ public static void reInitialize() { - if ( classInstance != null ) { - classInstance = null; - classInstance = new SSThresholdMgr(); - } + if (classInstance != null) { + classInstance = null; + } + // Update threshold file. + classInstance = new SSThresholdMgr(); + classInstance.loadDefaultMonitorThreshold(); + classInstance.saveMonitorThresholds(); } @Override - protected ArrayList getThresholdKeys(DataUsageKey dataUsage) - { + protected ArrayList getThresholdKeys(DataUsageKey dataUsage) { ArrayList threshKeys = new ArrayList(); - - if (dataUsage == DataUsageKey.DISPLAY) - { - for (SafeSeasDisplay ssDisp : SafeSeasDisplay.values()) - { + + if (dataUsage == DataUsageKey.DISPLAY) { + for (SafeSeasDisplay ssDisp : SafeSeasDisplay.values()) { threshKeys.add(ssDisp.getXmlKey()); } - } - else if (dataUsage == DataUsageKey.MONITOR) - { - for (SafeSeasMonitor ssMon : SafeSeasMonitor.values()) - { + } else if (dataUsage == DataUsageKey.MONITOR) { + for (SafeSeasMonitor ssMon : SafeSeasMonitor.values()) { threshKeys.add(ssMon.getXmlKey()); } } - + return threshKeys; } - @Override - public MonitorConfigurationManager getAreaConfigMgr() { + @Override + public MonitorConfigurationManager getAreaConfigMgr() { if (areaConfigMgr == null) { LocalizationManager mgr = LocalizationManager.getInstance(); String siteScope = mgr.getCurrentSite(); - + areaConfigMgr = SSMonitorConfigurationManager.getInstance(); areaConfigMgr.readConfigXml(siteScope); } return areaConfigMgr; - } + } -// /** -// * Get the path where the display thresholds XML files are contained. -// * @return File path. -// */ -// @Override -// public String getDisplayThresholdPath() -// { -// String fs = String.valueOf(File.separatorChar); -// StringBuilder sb = new StringBuilder(); -// -// sb.append("safeseas").append(fs); -// sb.append("threshold").append(fs); -// sb.append("display").append(fs); -// -// return sb.toString(); -// } -// -// /** -// * Get the path where the monitor thresholds XML files are contained. -// * @return File path. -// */ -// @Override -// public String getMonitorThresholdPath() -// { -// String fs = String.valueOf(File.separatorChar); -// StringBuilder sb = new StringBuilder(); -// -// sb.append("safeseas").append(fs); -// sb.append("threshold").append(fs); -// sb.append("monitor").append(fs); -// -// return sb.toString(); -// } -// -// /** -// * Get the path where the XML file containing the user selected -// * default file is located. -// * @return The path of the user selected default file XML. -// */ -// @Override -// public String getDefaultThresholdFilePath() -// { -// String fs = String.valueOf(File.separatorChar); -// StringBuilder sb = new StringBuilder(); -// -// sb.append("safeseas").append(fs); -// sb.append("threshold").append(fs); -// sb.append("display").append(fs); -// sb.append("defaultThresh").append(fs); -// -// return sb.toString(); -// } + // /** + // * Get the path where the display thresholds XML files are contained. + // * @return File path. + // */ + // @Override + // public String getDisplayThresholdPath() + // { + // String fs = String.valueOf(File.separatorChar); + // StringBuilder sb = new StringBuilder(); + // + // sb.append("safeseas").append(fs); + // sb.append("threshold").append(fs); + // sb.append("display").append(fs); + // + // return sb.toString(); + // } + // + // /** + // * Get the path where the monitor thresholds XML files are contained. + // * @return File path. + // */ + // @Override + // public String getMonitorThresholdPath() + // { + // String fs = String.valueOf(File.separatorChar); + // StringBuilder sb = new StringBuilder(); + // + // sb.append("safeseas").append(fs); + // sb.append("threshold").append(fs); + // sb.append("monitor").append(fs); + // + // return sb.toString(); + // } + // + // /** + // * Get the path where the XML file containing the user selected + // * default file is located. + // * @return The path of the user selected default file XML. + // */ + // @Override + // public String getDefaultThresholdFilePath() + // { + // String fs = String.valueOf(File.separatorChar); + // StringBuilder sb = new StringBuilder(); + // + // sb.append("safeseas").append(fs); + // sb.append("threshold").append(fs); + // sb.append("display").append(fs); + // sb.append("defaultThresh").append(fs); + // + // return sb.toString(); + // } } diff --git a/cave/com.raytheon.uf.viz.monitor.safeseas/src/com/raytheon/uf/viz/monitor/safeseas/ui/dialogs/SSMonitoringAreaConfigDlg.java b/cave/com.raytheon.uf.viz.monitor.safeseas/src/com/raytheon/uf/viz/monitor/safeseas/ui/dialogs/SSMonitoringAreaConfigDlg.java index 67f87ea8ca..2e3280a6ad 100644 --- a/cave/com.raytheon.uf.viz.monitor.safeseas/src/com/raytheon/uf/viz/monitor/safeseas/ui/dialogs/SSMonitoringAreaConfigDlg.java +++ b/cave/com.raytheon.uf.viz.monitor.safeseas/src/com/raytheon/uf/viz/monitor/safeseas/ui/dialogs/SSMonitoringAreaConfigDlg.java @@ -31,7 +31,7 @@ import com.raytheon.uf.viz.monitor.safeseas.threshold.SSThresholdMgr; import com.raytheon.uf.viz.monitor.ui.dialogs.MonitoringAreaConfigDlg; /** - * TODO Add Description + * SAFESEAS area configuration dialog. * *
  * 
@@ -40,6 +40,7 @@ import com.raytheon.uf.viz.monitor.ui.dialogs.MonitoringAreaConfigDlg;
  * ------------ ---------- ----------- --------------------------
  * Jan  5, 2010            mpduff      Initial creation
  * Nov 27, 2012 1351       skorolev    Changes for non-blocking dialog.
+ * Jan 29, 2014 2757       skorolev    Changed OK button handler.
  * 
  * 
* @@ -60,6 +61,9 @@ public class SSMonitoringAreaConfigDlg extends MonitoringAreaConfigDlg { readConfigData(); } + private SSMonitorConfigurationManager configManager = SSMonitorConfigurationManager + .getInstance(); + /* * (non-Javadoc) * @@ -68,19 +72,23 @@ public class SSMonitoringAreaConfigDlg extends MonitoringAreaConfigDlg { */ @Override protected void handleOkBtnSelection() { - SSMonitorConfigurationManager configManager = SSMonitorConfigurationManager - .getInstance(); // Check for changes in the data if (!configManager.getAddedZones().isEmpty() - || !configManager.getAddedZones().isEmpty()) { + || !configManager.getAddedStations().isEmpty() + || this.timeWindowChanged || this.shipDistanceChanged + || this.fogChkChanged || this.maZonesRemoved) { int choice = showMessage(shell, SWT.OK | SWT.CANCEL, "SAFESEAS Monitor Confirm Changes", "Want to update the SAFESEAS setup files?"); if (choice == SWT.OK) { // Save the config xml file - configManager.setShipDistance(distanceScale.getSelection()); - configManager.setTimeWindow(timeScale.getSelection()); + configManager.setTimeWindow(timeWindow.getSelection()); + this.timeWindowChanged = false; + configManager.setShipDistance(shipDistance.getSelection()); + this.shipDistanceChanged = false; configManager.setUseAlgorithms(fogChk.getSelection()); + this.fogChkChanged = false; + this.maZonesRemoved = false; configManager.saveConfigData(); /** * DR#11279: re-initialize threshold manager and the monitor @@ -88,20 +96,30 @@ public class SSMonitoringAreaConfigDlg extends MonitoringAreaConfigDlg { */ SSThresholdMgr.reInitialize(); SafeSeasMonitor.reInitialize(); - showMessage(shell, SWT.OK, "SAFESEAS Config Change", - "You're updating the SAFESEAS monitoring settings." - + "\n\nIf SAFESEAS is running anywhere within " - + "the office, please clear it.\n"); - String message2 = "New zones have been added, and their monitoring thresholds " - + "have been set to default values; would you like to modify " - + "their threshold values now?"; - int yesno = showMessage(shell, SWT.ICON_QUESTION | SWT.YES - | SWT.NO, "Edit Thresholds Now?", message2); - if (yesno == SWT.YES) { - SSDispMonThreshDlg ssMonitorDlg = new SSDispMonThreshDlg( - shell, CommonConfig.AppName.SAFESEAS, - DataUsageKey.MONITOR); - ssMonitorDlg.open(); + if ((!configManager.getAddedZones().isEmpty()) + || (!configManager.getAddedStations().isEmpty())) { + + String message = "You're updating the SAFESEAS monitoring settings." + + "\n\nIf SAFESEAS is running anywhere within " + + "the office, please clear it.\n"; + + showMessage(shell, SWT.OK, "SAFESEAS Config Change", + message); + + String message2 = "New zones have been added, and their monitoring thresholds " + + "have been set to default values; would you like to modify " + + "their threshold values now?"; + + int yesno = showMessage(shell, SWT.ICON_QUESTION | SWT.YES + | SWT.NO, "Edit Thresholds Now?", message2); + if (yesno == SWT.YES) { + SSDispMonThreshDlg ssMonitorDlg = new SSDispMonThreshDlg( + shell, CommonConfig.AppName.SAFESEAS, + DataUsageKey.MONITOR); + ssMonitorDlg.open(); + } + configManager.getAddedZones().clear(); + configManager.getAddedStations().clear(); } } } else { @@ -111,9 +129,9 @@ public class SSMonitoringAreaConfigDlg extends MonitoringAreaConfigDlg { if (yesno == SWT.NO) { return; } + setReturnValue(true); + close(); } - setReturnValue(true); - close(); } /* @@ -137,8 +155,22 @@ public class SSMonitoringAreaConfigDlg extends MonitoringAreaConfigDlg { */ @Override protected void readConfigData() { - SSMonitorConfigurationManager configManager = SSMonitorConfigurationManager - .getInstance(); configManager.readConfigXml(currentSite); } + + /* + * (non-Javadoc) + * + * @see + * com.raytheon.uf.viz.monitor.ui.dialogs.MonitoringAreaConfigDlg#setValues + * () + */ + @Override + protected void setValues() { + timeWindow.setSelection(configManager.getTimeWindow()); + setTimeScaleLabel(); + shipDistance.setSelection(configManager.getShipDistance()); + setShipDistScaleLabel(); + fogChk.setSelection(configManager.isUseAlgorithms()); + } } diff --git a/cave/com.raytheon.uf.viz.monitor.snow/src/com/raytheon/uf/viz/monitor/snow/threshold/SnowThresholdMgr.java b/cave/com.raytheon.uf.viz.monitor.snow/src/com/raytheon/uf/viz/monitor/snow/threshold/SnowThresholdMgr.java index e50f0a5a05..0541b0ce39 100644 --- a/cave/com.raytheon.uf.viz.monitor.snow/src/com/raytheon/uf/viz/monitor/snow/threshold/SnowThresholdMgr.java +++ b/cave/com.raytheon.uf.viz.monitor.snow/src/com/raytheon/uf/viz/monitor/snow/threshold/SnowThresholdMgr.java @@ -29,145 +29,135 @@ import com.raytheon.uf.viz.monitor.thresholds.AbstractThresholdMgr; import com.raytheon.uf.viz.monitor.util.MonitorConfigConstants.SnowDisplay; import com.raytheon.uf.viz.monitor.util.MonitorConfigConstants.SnowMonitor; - /** * This class manages the Snow thresholds for display and monitor. * *
- *
+ * 
  * SOFTWARE HISTORY
- *
+ * 
  * Date         Ticket#    Engineer    Description
  * ------------ ---------- ----------- --------------------------
  * Dec 27, 2009 #3963      lvenable     Initial creation
- *
+ * Feb 03, 2014 #2757      skorolev     Fixed reInitialize()
+ * 
  * 
- * + * * @author lvenable * @version 1.0 */ -public class SnowThresholdMgr extends AbstractThresholdMgr -{ -private static SnowThresholdMgr classInstance; - - private SnowThresholdMgr() - { +public class SnowThresholdMgr extends AbstractThresholdMgr { + private static SnowThresholdMgr classInstance; + + private SnowThresholdMgr() { super("DefaultSnowDisplayThresholds.xml", - "DefaultSnowMonitorThresholds.xml", - "snow"); + "DefaultSnowMonitorThresholds.xml", "snow"); areaConfigMgr = getAreaConfigMgr(); init(); // call init() after areaConfigMgr is set } - - public static SnowThresholdMgr getInstance() - { - if (classInstance == null) - { + + public static SnowThresholdMgr getInstance() { + if (classInstance == null) { classInstance = new SnowThresholdMgr(); } - + return classInstance; } /** - * DR#11279: - * When monitor area configuration is changed, - * threshold manager needs to be re-initialized - * using the new monitor area configuration + * DR#11279: When monitor area configuration is changed, threshold manager + * needs to be re-initialized using the new monitor area configuration */ public static void reInitialize() { - if ( classInstance != null ) { - classInstance = null; - classInstance = new SnowThresholdMgr(); - } + if (classInstance != null) { + classInstance = null; + } + // Update threshold file. + classInstance = new SnowThresholdMgr(); + classInstance.loadDefaultMonitorThreshold(); + classInstance.saveMonitorThresholds(); } @Override - protected ArrayList getThresholdKeys(DataUsageKey dataUsage) - { + protected ArrayList getThresholdKeys(DataUsageKey dataUsage) { ArrayList threshKeys = new ArrayList(); - - if (dataUsage == DataUsageKey.DISPLAY) - { - for (SnowDisplay snowDisp : SnowDisplay.values()) - { + + if (dataUsage == DataUsageKey.DISPLAY) { + for (SnowDisplay snowDisp : SnowDisplay.values()) { threshKeys.add(snowDisp.getXmlKey()); } - } - else if (dataUsage == DataUsageKey.MONITOR) - { - for (SnowMonitor snowMon : SnowMonitor.values()) - { + } else if (dataUsage == DataUsageKey.MONITOR) { + for (SnowMonitor snowMon : SnowMonitor.values()) { threshKeys.add(snowMon.getXmlKey()); } } - + return threshKeys; } - @Override - public MonitorConfigurationManager getAreaConfigMgr() { + @Override + public MonitorConfigurationManager getAreaConfigMgr() { if (areaConfigMgr == null) { LocalizationManager mgr = LocalizationManager.getInstance(); String siteScope = mgr.getCurrentSite(); - + areaConfigMgr = SnowMonitorConfigurationManager.getInstance(); areaConfigMgr.readConfigXml(siteScope); } return areaConfigMgr; - } + } -// /** -// * Get the path where the display thresholds XML files are contained. -// * @return File path. -// */ -// @Override -// public String getDisplayThresholdPath() -// { -// String fs = String.valueOf(File.separatorChar); -// StringBuilder sb = new StringBuilder(); -// -// sb.append("snow").append(fs); -// sb.append("threshold").append(fs); -// sb.append("display").append(fs); -// -// return sb.toString(); -// } -// -// /** -// * Get the path where the monitor thresholds XML files are contained. -// * @return File path. -// */ -// @Override -// public String getMonitorThresholdPath() -// { -// String fs = String.valueOf(File.separatorChar); -// StringBuilder sb = new StringBuilder(); -// -// sb.append("snow").append(fs); -// sb.append("threshold").append(fs); -// sb.append("monitor").append(fs); -// -// return sb.toString(); -// } -// -// /** -// * Get the path where the XML file containing the user selected -// * default file is located. -// * @return The path of the user selected default file XML. -// */ -// @Override -// public String getDefaultThresholdFilePath() -// { -// String fs = String.valueOf(File.separatorChar); -// StringBuilder sb = new StringBuilder(); -// -// sb.append("snow").append(fs); -// sb.append("threshold").append(fs); -// sb.append("display").append(fs); -// sb.append("defaultThresh").append(fs); -// -// return sb.toString(); -// } + // /** + // * Get the path where the display thresholds XML files are contained. + // * @return File path. + // */ + // @Override + // public String getDisplayThresholdPath() + // { + // String fs = String.valueOf(File.separatorChar); + // StringBuilder sb = new StringBuilder(); + // + // sb.append("snow").append(fs); + // sb.append("threshold").append(fs); + // sb.append("display").append(fs); + // + // return sb.toString(); + // } + // + // /** + // * Get the path where the monitor thresholds XML files are contained. + // * @return File path. + // */ + // @Override + // public String getMonitorThresholdPath() + // { + // String fs = String.valueOf(File.separatorChar); + // StringBuilder sb = new StringBuilder(); + // + // sb.append("snow").append(fs); + // sb.append("threshold").append(fs); + // sb.append("monitor").append(fs); + // + // return sb.toString(); + // } + // + // /** + // * Get the path where the XML file containing the user selected + // * default file is located. + // * @return The path of the user selected default file XML. + // */ + // @Override + // public String getDefaultThresholdFilePath() + // { + // String fs = String.valueOf(File.separatorChar); + // StringBuilder sb = new StringBuilder(); + // + // sb.append("snow").append(fs); + // sb.append("threshold").append(fs); + // sb.append("display").append(fs); + // sb.append("defaultThresh").append(fs); + // + // return sb.toString(); + // } } diff --git a/cave/com.raytheon.uf.viz.monitor.snow/src/com/raytheon/uf/viz/monitor/snow/ui/dialogs/SnowMonitoringAreaConfigDlg.java b/cave/com.raytheon.uf.viz.monitor.snow/src/com/raytheon/uf/viz/monitor/snow/ui/dialogs/SnowMonitoringAreaConfigDlg.java index e40ce21bc8..74fc07479f 100644 --- a/cave/com.raytheon.uf.viz.monitor.snow/src/com/raytheon/uf/viz/monitor/snow/ui/dialogs/SnowMonitoringAreaConfigDlg.java +++ b/cave/com.raytheon.uf.viz.monitor.snow/src/com/raytheon/uf/viz/monitor/snow/ui/dialogs/SnowMonitoringAreaConfigDlg.java @@ -40,6 +40,7 @@ import com.raytheon.uf.viz.monitor.ui.dialogs.MonitoringAreaConfigDlg; * ------------ ---------- ----------- -------------------------- * Jan 5, 2010 mpduff Initial creation * Nov 27, 2012 1351 skorolev Changes for non-blocking dialog. + * Jan 29, 2014 2757 skorolev Changed OK button handler. * * * @@ -54,6 +55,9 @@ public class SnowMonitoringAreaConfigDlg extends MonitoringAreaConfigDlg { readConfigData(); } + private SnowMonitorConfigurationManager configManager = SnowMonitorConfigurationManager + .getInstance(); + /* * (non-Javadoc) * @@ -62,17 +66,18 @@ public class SnowMonitoringAreaConfigDlg extends MonitoringAreaConfigDlg { */ @Override protected void handleOkBtnSelection() { - SnowMonitorConfigurationManager configManager = SnowMonitorConfigurationManager - .getInstance(); // Check for changes in the data if (!configManager.getAddedZones().isEmpty() - || !configManager.getAddedZones().isEmpty()) { + || !configManager.getAddedStations().isEmpty() + || this.timeWindowChanged || this.maZonesRemoved) { int choice = showMessage(shell, SWT.OK | SWT.CANCEL, "SNOW Monitor Confirm Changes", "Want to update the SNOW setup files?"); if (choice == SWT.OK) { // Save the config xml file - configManager.setTimeWindow(timeScale.getSelection()); + configManager.setTimeWindow(timeWindow.getSelection()); + this.timeWindowChanged = false; + this.maZonesRemoved = false; configManager.saveConfigData(); /** * DR#11279: re-initialize threshold manager and the monitor @@ -80,23 +85,29 @@ public class SnowMonitoringAreaConfigDlg extends MonitoringAreaConfigDlg { */ SnowThresholdMgr.reInitialize(); SnowMonitor.reInitialize(); - showMessage(shell, SWT.ICON_INFORMATION | SWT.OK, - "SNOW Config Change", - "You're updating the SNOW monitoring settings." - + "\n\nIf SNOW is running anywhere within " - + "the office, please clear it.\n"); - String message2 = "New zones have been added, and their monitoring thresholds " - + "have been set to default values; would you like to modify " - + "their threshold values now?"; - int yesno = showMessage(shell, SWT.ICON_QUESTION | SWT.YES - | SWT.NO, "Edit Thresholds Now?", message2); - if (yesno == SWT.YES) { - SnowMonDispThreshDlg snowMonitorDlg = new SnowMonDispThreshDlg( - shell, CommonConfig.AppName.SNOW, - DataUsageKey.MONITOR); - snowMonitorDlg.open(); + if ((!configManager.getAddedZones().isEmpty()) + || (!configManager.getAddedStations().isEmpty())) { + showMessage(shell, SWT.ICON_INFORMATION | SWT.OK, + "SNOW Config Change", + "You're updating the SNOW monitoring settings." + + "\n\nIf SNOW is running anywhere within " + + "the office, please clear it.\n"); + + String message2 = "New zones have been added, and their monitoring thresholds " + + "have been set to default values; would you like to modify " + + "their threshold values now?"; + int yesno = showMessage(shell, SWT.ICON_QUESTION | SWT.YES + | SWT.NO, "Edit Thresholds Now?", message2); + if (yesno == SWT.YES) { + SnowMonDispThreshDlg snowMonitorDlg = new SnowMonDispThreshDlg( + shell, CommonConfig.AppName.SNOW, + DataUsageKey.MONITOR); + snowMonitorDlg.open(); + } } + configManager.getAddedZones().clear(); + configManager.getAddedStations().clear(); } } else { String message3 = "No changes made.\nDo you want to exit?"; @@ -105,9 +116,9 @@ public class SnowMonitoringAreaConfigDlg extends MonitoringAreaConfigDlg { if (yesno == SWT.NO) { return; } + setReturnValue(true); + close(); } - setReturnValue(true); - close(); } /* @@ -130,9 +141,20 @@ public class SnowMonitoringAreaConfigDlg extends MonitoringAreaConfigDlg { */ @Override protected void readConfigData() { - SnowMonitorConfigurationManager configManager = SnowMonitorConfigurationManager - .getInstance(); configManager.readConfigXml(currentSite); } + /* + * (non-Javadoc) + * + * @see + * com.raytheon.uf.viz.monitor.ui.dialogs.MonitoringAreaConfigDlg#setValues + * () + */ + @Override + protected void setValues() { + timeWindow.setSelection(configManager.getTimeWindow()); + setTimeScaleLabel(); + } + } diff --git a/cave/com.raytheon.uf.viz.monitor/src/com/raytheon/uf/viz/monitor/ui/dialogs/MonitoringAreaConfigDlg.java b/cave/com.raytheon.uf.viz.monitor/src/com/raytheon/uf/viz/monitor/ui/dialogs/MonitoringAreaConfigDlg.java index 48edc54918..971b7f5cf8 100644 --- a/cave/com.raytheon.uf.viz.monitor/src/com/raytheon/uf/viz/monitor/ui/dialogs/MonitoringAreaConfigDlg.java +++ b/cave/com.raytheon.uf.viz.monitor/src/com/raytheon/uf/viz/monitor/ui/dialogs/MonitoringAreaConfigDlg.java @@ -71,7 +71,7 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback; * Nov 16, 2012 1297 skorolev Changes for non-blocking dialog. * Feb 06, 2013 1578 skorolev Fixed a cursor problem for checkboxes. * Oct 07, 2013 #2443 lvenable Fixed image memory leak. - * + * Jan 29, 2014 2757 skorolev Added status variables. * * * @author lvenable @@ -125,17 +125,25 @@ public abstract class MonitoringAreaConfigDlg extends CaveSWTDialog implements /** Edit/Delete button. **/ private Button editDeleteBtn; - /** Time scale control. **/ - protected Scale timeScale; + /** Time window control. **/ + protected Scale timeWindow; + + /** Time window status. */ + protected boolean timeWindowChanged = false; /** Time scale label to display the value set by the time scale. **/ - private Label timeScaleLbl; + private Label timeWindowLbl; - /** Distance scale. **/ - protected Scale distanceScale; + /** Ship Distance scale. **/ + protected Scale shipDistance; - /** Distance scale label to display the value set by the distance scale. **/ - private Label distanceScaleLBl; + /** Ship Distance status. */ + protected boolean shipDistanceChanged = false; + + /** + * Ship Distance scale label to display the value set by the distance scale. + **/ + private Label shipDistanceLBl; /** Monitor area Add button. **/ private Button monAreaAddBtn; @@ -158,6 +166,9 @@ public abstract class MonitoringAreaConfigDlg extends CaveSWTDialog implements /** Fog check button. **/ protected Button fogChk; + /** Fog check button status. */ + protected boolean fogChkChanged = false; + /** Control font. **/ private Font controlFont; @@ -170,6 +181,9 @@ public abstract class MonitoringAreaConfigDlg extends CaveSWTDialog implements /** monitor area zones **/ private java.util.List maZones = null; + /** monitor area zones status. */ + protected boolean maZonesRemoved = false; + /** monitor area stations **/ private java.util.List maStations = null; @@ -457,6 +471,7 @@ public abstract class MonitoringAreaConfigDlg extends CaveSWTDialog implements @Override public void widgetSelected(SelectionEvent event) { removeZoneStn(); + maZonesRemoved = true; } }); @@ -646,22 +661,23 @@ public abstract class MonitoringAreaConfigDlg extends CaveSWTDialog implements int defaultVal = (int) Math.round((2.00 - 0.25) / .05); gd = new GridData(SWT.FILL, SWT.DEFAULT, true, false); - timeScale = new Scale(scaleComp, SWT.HORIZONTAL); - timeScale.setMinimum(0); - timeScale.setMaximum(max); - timeScale.setSelection(defaultVal); - timeScale.setLayoutData(gd); - timeScale.addSelectionListener(new SelectionAdapter() { + timeWindow = new Scale(scaleComp, SWT.HORIZONTAL); + timeWindow.setMinimum(0); + timeWindow.setMaximum(max); + timeWindow.setSelection(defaultVal); + timeWindow.setLayoutData(gd); + timeWindow.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { setTimeScaleLabel(); + timeWindowChanged = true; } }); gd = new GridData(50, SWT.DEFAULT); - timeScaleLbl = new Label(scaleComp, SWT.NONE); - timeScaleLbl.setFont(controlFont); - timeScaleLbl.setLayoutData(gd); + timeWindowLbl = new Label(scaleComp, SWT.NONE); + timeWindowLbl.setFont(controlFont); + timeWindowLbl.setLayoutData(gd); setTimeScaleLabel(); @@ -682,22 +698,23 @@ public abstract class MonitoringAreaConfigDlg extends CaveSWTDialog implements distanceLbl.setLayoutData(gd); gd = new GridData(SWT.FILL, SWT.DEFAULT, true, false); - distanceScale = new Scale(scaleComp, SWT.HORIZONTAL); - distanceScale.setMinimum(0); - distanceScale.setMaximum(200); - distanceScale.setSelection(100); - distanceScale.setLayoutData(gd); - distanceScale.addSelectionListener(new SelectionAdapter() { + shipDistance = new Scale(scaleComp, SWT.HORIZONTAL); + shipDistance.setMinimum(0); + shipDistance.setMaximum(200); + shipDistance.setSelection(100); + shipDistance.setLayoutData(gd); + shipDistance.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { setShipDistScaleLabel(); + shipDistanceChanged = true; } }); gd = new GridData(50, SWT.DEFAULT); - distanceScaleLBl = new Label(scaleComp, SWT.NONE); - distanceScaleLBl.setFont(controlFont); - distanceScaleLBl.setLayoutData(gd); + shipDistanceLBl = new Label(scaleComp, SWT.NONE); + shipDistanceLBl.setFont(controlFont); + shipDistanceLBl.setLayoutData(gd); setShipDistScaleLabel(); @@ -709,6 +726,12 @@ public abstract class MonitoringAreaConfigDlg extends CaveSWTDialog implements gd = new GridData(); gd.horizontalSpan = 2; fogChk = new Button(scaleComp, SWT.CHECK); + fogChk.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + fogChkChanged = true; + } + }); setAlgorithmText(); } @@ -784,18 +807,18 @@ public abstract class MonitoringAreaConfigDlg extends CaveSWTDialog implements /** * Set the time scale label. */ - private void setTimeScaleLabel() { - double val = timeScale.getSelection() * .05 + .25; + protected void setTimeScaleLabel() { + double val = timeWindow.getSelection() * .05 + .25; val = roundToHundredths(val); - timeScaleLbl.setText(String.format("%5.2f", val)); + timeWindowLbl.setText(String.format("%5.2f", val)); } /** * Set the ship distance scale label. */ - private void setShipDistScaleLabel() { - distanceScaleLBl.setText(String.format("%5d", - distanceScale.getSelection())); + protected void setShipDistScaleLabel() { + shipDistanceLBl.setText(String.format("%5d", + shipDistance.getSelection())); } /** @@ -958,27 +981,7 @@ public abstract class MonitoringAreaConfigDlg extends CaveSWTDialog implements /** * Set the slider values and the check box. */ - private void setValues() { - MonitorConfigurationManager configManager = getConfigManager(); - - if (appName == AppName.SAFESEAS) { - fogChk.setSelection(((SSMonitorConfigurationManager) configManager) - .isUseAlgorithms()); - distanceScale - .setSelection(((SSMonitorConfigurationManager) configManager) - .getShipDistance()); - setShipDistScaleLabel(); - } else if (appName == AppName.FOG) { - fogChk.setSelection(((FogMonitorConfigurationManager) configManager) - .isUseAlgorithms()); - distanceScale - .setSelection(((FogMonitorConfigurationManager) configManager) - .getShipDistance()); - setShipDistScaleLabel(); - } - timeScale.setSelection(configManager.getTimeWindow()); - setTimeScaleLabel(); - } + protected abstract void setValues(); /** * Show a dialog message.