diff --git a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/commondialogs/SCANAlarmThreshDlg.java b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/commondialogs/SCANAlarmThreshDlg.java index 51595064c4..17fb90f90a 100644 --- a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/commondialogs/SCANAlarmThreshDlg.java +++ b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/commondialogs/SCANAlarmThreshDlg.java @@ -19,6 +19,8 @@ **/ package com.raytheon.uf.viz.monitor.scan.commondialogs; +import java.util.Set; + import org.eclipse.swt.SWT; import org.eclipse.swt.events.FocusAdapter; import org.eclipse.swt.events.FocusEvent; @@ -40,8 +42,12 @@ import org.eclipse.swt.widgets.Text; import com.raytheon.uf.common.monitor.scan.config.AbsConfigMgr; import com.raytheon.uf.common.monitor.scan.config.SCANConfig; import com.raytheon.uf.common.monitor.scan.config.SCANConfigEnums.ScanTables; +import com.raytheon.uf.viz.monitor.scan.ScanMonitor; +import com.raytheon.uf.viz.monitor.scan.tables.AbstractTableDlg; import com.raytheon.uf.viz.monitor.scan.tables.SCANAlarmAlertManager; +import com.raytheon.uf.viz.monitor.scan.tables.SCANCellTableDlg; import com.raytheon.uf.viz.monitor.scan.tables.SCANAlarmAlertManager.AlarmType; +import com.raytheon.uf.viz.monitor.scan.tables.SCANAlarmAlertManager.AlertedAlarms; import com.raytheon.viz.ui.dialogs.CaveSWTDialog; public class SCANAlarmThreshDlg extends CaveSWTDialog implements @@ -239,6 +245,16 @@ public class SCANAlarmThreshDlg extends CaveSWTDialog implements @Override public void widgetSelected(SelectionEvent e) { alarmChoiceChanged(); + String columnName = attributeCbo.getText(); + mgr.clearAlertedAlarms(site, scanTable); + AbstractTableDlg tableDlg = ScanMonitor.getInstance() + .getDialog(scanTable, site); + tableDlg.updateThresh(columnName); + if (mgr.getAlertedAlarmCount(site, scanTable) == 0) { + tableDlg.turnOffAlarm(); + } else { + tableDlg.turnOnAlarm(); + } shell.dispose(); } }); diff --git a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/resource/ScanResource.java b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/resource/ScanResource.java index 0b314f53ec..5d50f74561 100644 --- a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/resource/ScanResource.java +++ b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/resource/ScanResource.java @@ -157,7 +157,7 @@ public class ScanResource extends VizApp.runAsync(new Runnable() { @Override public void run() { - if (getScanDrawer().font != null) { + if (gc != null && getScanDrawer().font != null) { getScanDrawer().font.setMagnification(getCapability( MagnificationCapability.class).getMagnification() .floatValue()); @@ -560,7 +560,7 @@ public class ScanResource extends * @return */ public ScanDrawer getScanDrawer() { - if (drawer == null) { + if (drawer == null && gc != null) { if (getTable().equals(ScanTables.CELL)) { drawer = new ScanDrawer(SCANConfig.getInstance() .getStormCellConfig(), gc, getScan() diff --git a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/AbstractTableDlg.java b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/AbstractTableDlg.java index 87403d054d..2e0e577380 100644 --- a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/AbstractTableDlg.java +++ b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/AbstractTableDlg.java @@ -765,4 +765,8 @@ public abstract class AbstractTableDlg extends Dialog implements IMonitor, protected abstract void handleRankMenuEvent(SelectionEvent event); public abstract void updateThresh(String attr); + + public abstract void turnOffAlarm(); + + public abstract void turnOnAlarm(); } diff --git a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANAlarmAlertManager.java b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANAlarmAlertManager.java index cbd4eaeb10..148ea934d3 100644 --- a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANAlarmAlertManager.java +++ b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANAlarmAlertManager.java @@ -21,10 +21,13 @@ package com.raytheon.uf.viz.monitor.scan.tables; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.concurrent.CopyOnWriteArrayList; @@ -36,6 +39,7 @@ import com.raytheon.uf.common.monitor.scan.config.SCANConfigEnums; import com.raytheon.uf.common.monitor.scan.config.SCANConfigEnums.ScanTables; import com.raytheon.uf.viz.monitor.scan.ScanMonitor; import com.raytheon.uf.viz.monitor.scan.data.ScanDataGenerator; +import com.raytheon.uf.viz.monitor.scan.tables.SCANAlarmAlertManager.AlarmType; /** * Manager class to hold between scan dialog and alarming capabilities @@ -74,11 +78,11 @@ public class SCANAlarmAlertManager { private static SCANAlarmAlertManager instance = null; - private HashMap>> scheduledAlarmsMap; + private Map>> scheduledAlarmsMap; - private HashMap>> alertedAlarmsMap; + private Map>> alertedAlarmsMap; - private HashMap>> idents; + private Map>> idents; private boolean ring = false; @@ -98,7 +102,7 @@ public class SCANAlarmAlertManager { public void addSite(String site) { if (!scheduledAlarmsMap.containsKey(site)) { - HashMap> siteScheduledAlarmsMap = new HashMap>(); + Map> siteScheduledAlarmsMap = Collections.synchronizedMap(new HashMap>()); siteScheduledAlarmsMap.put(ScanTables.DMD, new CopyOnWriteArrayList()); siteScheduledAlarmsMap.put(ScanTables.CELL, @@ -107,7 +111,7 @@ public class SCANAlarmAlertManager { } if (!alertedAlarmsMap.containsKey(site)) { - HashMap> siteAlertedAlarmsSet = new HashMap>(); + Map> siteAlertedAlarmsSet = Collections.synchronizedMap(new HashMap>()); siteAlertedAlarmsSet.put(ScanTables.DMD, new HashSet()); siteAlertedAlarmsSet.put(ScanTables.CELL, @@ -116,7 +120,7 @@ public class SCANAlarmAlertManager { } if (!idents.containsKey(site)) { - HashMap> siteIdents = new HashMap>(); + Map> siteIdents = new HashMap>(); siteIdents.put(ScanTables.CELL, new ArrayList()); siteIdents.put(ScanTables.DMD, new ArrayList()); idents.put(site, siteIdents); @@ -126,15 +130,15 @@ public class SCANAlarmAlertManager { private SCANAlarmAlertManager() { if (scheduledAlarmsMap == null) { - scheduledAlarmsMap = new HashMap>>(); + scheduledAlarmsMap = Collections.synchronizedMap(new HashMap>>()); } if (alertedAlarmsMap == null) { - alertedAlarmsMap = new HashMap>>(); + alertedAlarmsMap = Collections.synchronizedMap(new HashMap>>()); } if (idents == null) { - idents = new HashMap>>(); + idents = new HashMap>>(); } } @@ -438,7 +442,7 @@ public class SCANAlarmAlertManager { return count; } - + public boolean containsAlarm(String site, ScanTables tableType, AlarmType type, String colName, String ident) { for (AlertedAlarms alarm : alertedAlarmsMap.get(site).get(tableType)) { @@ -493,9 +497,10 @@ public class SCANAlarmAlertManager { alarm.cleared = true; } } - + public void removeAlertedAlarms(String site, ScanTables tableType) { alertedAlarmsMap.get(site).get(tableType).clear(); + setRing(false); } /** @@ -603,4 +608,5 @@ public class SCANAlarmAlertManager { + this.row + "\nCol #:" + this.col + "\nCleared: " + cleared + "\n"; } } + } diff --git a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANCellTableDlg.java b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANCellTableDlg.java index d27cc25325..3f3a10758d 100644 --- a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANCellTableDlg.java +++ b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANCellTableDlg.java @@ -475,8 +475,7 @@ public class SCANCellTableDlg extends AbstractTableDlg implements alarmDlg.open(); if (!alarmBtn.isDisposed() && (mgr.getAlertedAlarmCount(site, scanTable) == 0)) { - alarmBtn.setVisible(false); - mgr.setRing(false); + turnOffAlarm(); } } }); @@ -488,7 +487,23 @@ public class SCANCellTableDlg extends AbstractTableDlg implements timeLbl.setLayoutData(gd); } - // private void resetButtonForegroundColor(Button btn) + @Override + public void turnOffAlarm() { + if (alarmBtn != null && !alarmBtn.isDisposed()) { + alarmBtn.setVisible(false); + } + mgr.setRing(false); + } + + @Override + public void turnOnAlarm() { + if (alarmBtn != null && !alarmBtn.isDisposed()) { + alarmBtn.setVisible(true); + } + mgr.setRing(true); + } + + // private void resetButtonForegroundColor(Button btn) // { // btn.setForeground(display.getSystemColor(SWT.COLOR_WHITE)); // } diff --git a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANDmdTableDlg.java b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANDmdTableDlg.java index 833d739c5f..64f217a003 100644 --- a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANDmdTableDlg.java +++ b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANDmdTableDlg.java @@ -514,8 +514,7 @@ public class SCANDmdTableDlg extends AbstractTableDlg implements alarmsDlg.open(); if (!alarmBtn.isDisposed() && mgr.getAlertedAlarms(site, scanTable).isEmpty()) { - alarmBtn.setVisible(false); - mgr.setRing(false); + turnOffAlarm(); } } }); @@ -1299,4 +1298,19 @@ public class SCANDmdTableDlg extends AbstractTableDlg implements dmdTableComp.alarmSelection(ident); } + + public void turnOffAlarm() { + if (alarmBtn != null && !alarmBtn.isDisposed()) { + alarmBtn.setVisible(false); + } + mgr.setRing(false); + } + + public void turnOnAlarm() { + if (alarmBtn != null && !alarmBtn.isDisposed()) { + alarmBtn.setVisible(true); + } + mgr.setRing(true); + } + } diff --git a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANMesoTableDlg.java b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANMesoTableDlg.java index 118f85283a..e837e49f45 100644 --- a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANMesoTableDlg.java +++ b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANMesoTableDlg.java @@ -647,4 +647,14 @@ public class SCANMesoTableDlg extends AbstractTableDlg implements return false; } + @Override + public void turnOffAlarm() { + mgr.setRing(false); + } + + @Override + public void turnOnAlarm() { + mgr.setRing(true); + } + } diff --git a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANTvsTableDlg.java b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANTvsTableDlg.java index bc129ffa75..aca8b68deb 100644 --- a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANTvsTableDlg.java +++ b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANTvsTableDlg.java @@ -609,4 +609,14 @@ public class SCANTvsTableDlg extends AbstractTableDlg implements // Not currently used for TVS return false; } + + @Override + public void turnOffAlarm() { + mgr.setRing(false); + } + + @Override + public void turnOnAlarm() { + mgr.setRing(true); + } }