localize/create individual Regional.xml scale; RadarMenuUtil revert; BOU localization;radar 4-panel update for lvl3

This commit is contained in:
Michael James 2016-07-26 12:28:31 -05:00
parent 507cb39462
commit 7397b099f9
16 changed files with 2764 additions and 446 deletions

View file

@ -1,8 +1,8 @@
### EDEX localization related variables ###
export AW_SITE_IDENTIFIER=OAX
export AW_SITE_IDENTIFIER=BOU
## Cluster id can be set to the cluster's id (example:tbw for dx1-tbwo)
## it will be autogenerated if not set
export CLUSTER_ID=OAX
export CLUSTER_ID=NCF
# Change the NCF_HOST to be the IP address of the server acting as the NCF server
export DATADELIVERY_HOST=thredds.ucar.edu
export EBXML_REGISTRY_FEDERATION_ENABLED=true

View file

@ -1,5 +1,5 @@
<project default="main" basedir=".">
<property name="localization.sites" value="OAX" />
<property name="localization.sites" value="BOU" />
<property name="deploy.python" value="true" />
<!--
The python packages to deploy - provided that

View file

@ -25,12 +25,6 @@
<import feature="com.raytheon.viz.text.feature" version="1.0.0.qualifier"/>
</requires>
<plugin
id="com.raytheon.uf.viz.d2d.ui.local"
download-size="0"
install-size="0"
version="0.0.0"/>
<plugin
id="com.raytheon.uf.viz.d2d.ui.ncephydro"
download-size="0"

View file

@ -273,6 +273,7 @@
name="afterLayoutGroup"
visible="true">
</separator>
<dynamic class="com.raytheon.viz.ui.actions.ToggleToolbarContributionItem" id="com.raytheon.uf.viz.d2d.ui.actions.ToggleToolbarContributionItem"/>
</menu>
<menu
id="options"
@ -411,6 +412,12 @@
</visibleWhen>
<separator name="RADAR_MENU_START" visible="false"/>
</menu>
<menu id="scan" mnemonic="C" label="SCAN">
<visibleWhen>
<reference definitionId="com.raytheon.uf.viz.d2d.ui.inD2DActionSet"></reference>
</visibleWhen>
<separator name="SCAN_MENU_START" visible="false"></separator>
</menu>
<menu
id="D2Dmaps"
@ -427,8 +434,22 @@
</dynamic>
</menu>
</menuContribution>
<menuContribution
locationURI="toolbar:org.eclipse.ui.main.toolbar?after=additions">
<menuContribution
locationURI="toolbar:org.eclipse.ui.main.toolbar?after=additions">
<toolbar id="d2d-1">
<command
commandId="com.raytheon.uf.viz.d2d.ui.actions.loadmodebutton"
id="com.raytheon.uf.viz.d2d.ui.actions.loadmode"
label="Load Mode"
style="pulldown"
tooltip="Load Mode">
<visibleWhen>
<reference
definitionId="com.raytheon.uf.viz.d2d.ui.inD2DActionSet">
</reference>
</visibleWhen>
</command>
</toolbar>
<toolbar
id="mapControls">
<command
@ -465,21 +486,6 @@
</visibleWhen>
</command>
</toolbar>
<toolbar
id="d2d-1">
<command
commandId="com.raytheon.uf.viz.d2d.ui.actions.loadmodebutton"
id="com.raytheon.uf.viz.d2d.ui.actions.loadmode"
label="Load Mode"
style="pulldown"
tooltip="Load Mode">
<visibleWhen>
<reference
definitionId="com.raytheon.uf.viz.d2d.ui.inD2DActionSet">
</reference>
</visibleWhen>
</command>
</toolbar>
<toolbar
id="loopControls">
<command
@ -992,6 +998,10 @@
<handler
class="com.raytheon.uf.viz.d2d.ui.actions.ImageCombinationAction"
commandId="com.raytheon.uf.viz.d2d.ui.actions.imageCombination">
</handler>
<handler
class="com.raytheon.uf.viz.d2d.ui.actions.ShowHistoryList"
commandId="com.raytheon.viz.ui.showHistoryList">
</handler>
<handler
class="com.raytheon.uf.viz.d2d.ui.actions.AddAWIPSProcedure"
@ -1513,6 +1523,12 @@
description="Toggle the image combination option"
name="Image Combination">
</command>
<command
id="com.raytheon.viz.ui.showHistoryList"
categoryId="com.raytheon.uf.viz.d2d.ui"
description="Show the d2d history list"
name="Show History List">
</command>
<command
id="com.raytheon.viz.ui.openAWIPSProcedure"
categoryId="com.raytheon.uf.viz.d2d.ui"

View file

@ -88,78 +88,12 @@ public class ThinClientConnectivityDialog extends ConnectivityPreferenceDialog {
private static final transient IUFStatusHandler statusHandler = UFStatus
.getHandler(ThinClientConnectivityDialog.class, "CAVE");
private class ServicesCallback implements IConnectivityCallback {
@Override
public void connectionChecked(ConnectivityResult results) {
servicesGood = results.hasConnectivity;
appendDetails(buildDetails(results));
if (!results.hasConnectivity && status == null) {
status = buildErrorMessage(results);
}
}
}
private class PypiesCallback implements IConnectivityCallback {
@Override
public void connectionChecked(ConnectivityResult results) {
pypiesGood = results.hasConnectivity;
appendDetails(buildDetails(results));
if (!results.hasConnectivity && status == null) {
status = buildErrorMessage(results);
}
}
}
private class JmsCallback implements IConnectivityCallback {
@Override
public void connectionChecked(ConnectivityResult results) {
jmsGood = results.hasConnectivity;
appendDetails(buildDetails(results));
if (!results.hasConnectivity && status == null) {
status = buildErrorMessage(results);
}
}
}
private boolean servicesGood = false;
private IConnectivityCallback servicesCallback = new ServicesCallback();
private boolean pypiesGood = false;
private IConnectivityCallback pypiesCallback = new PypiesCallback();
private boolean useProxy = true;
private Button alwaysPromptCheck;
private String dataRefreshMethod;
private boolean jmsGood = false;
private boolean alwaysPrompt;
private IConnectivityCallback jmsCallback = new JmsCallback();
private String proxyAddress;
private Button autoPullBtn;
private Button timedPollBtn;
private final String dataRefreshTooltip = "Automatic Push: Data pushed as soon as available\n"
+ "Timed Poll: Poll for new data at scheduled intervals";
private final String unableConnectJMS = "\n\nUnable to connect to JMS: Automatic Push disabled";
private Group dataRefreshGroup;
public ThinClientConnectivityDialog(boolean checkAlertViz) {
super(checkAlertViz, "AWIPS Connectivity Preferences");
super(checkAlertViz, "TC Connectivity Preferences");
IPreferenceStore store = Activator.getDefault().getPreferenceStore();
dataRefreshMethod = store
.getString(ThinClientPreferenceConstants.P_DATA_REFRESH_METHOD);
@ -167,192 +101,4 @@ public class ThinClientConnectivityDialog extends ConnectivityPreferenceDialog {
.getString(ThinClientPreferenceConstants.P_PROXY_ADDRESS);
}
@Override
protected String[] getServerOptions() {
IPreferenceStore thinPrefs = Activator.getDefault()
.getPreferenceStore();
return ServerRemembrance.getServerOptions(thinPrefs,
ThinClientPreferenceConstants.P_PROXY_SERVER_OPTIONS);
}
@Override
protected void createTextBoxes(Composite textBoxComp) {
super.createTextBoxes(textBoxComp);
new Label(textBoxComp, SWT.NONE);
}
@Override
protected void applySettings() {
IPersistentPreferenceStore thinStore = Activator.getDefault()
.getPreferenceStore();
thinStore.setValue(ThinClientPreferenceConstants.P_DATA_REFRESH_METHOD,
dataRefreshMethod);
thinStore.setValue(ThinClientPreferenceConstants.P_USE_PROXIES,
useProxy);
IPersistentPreferenceStore localStore = LocalizationManager
.getInstance().getLocalizationStore();
localStore.setValue(
LocalizationConstants.P_LOCALIZATION_PROMPT_ON_STARTUP,
alwaysPrompt);
thinStore.setValue(ThinClientPreferenceConstants.P_PROXY_ADDRESS,
proxyAddress);
String proxyServerOptions = ServerRemembrance.formatServerOptions(
proxyAddress, thinStore,
ThinClientPreferenceConstants.P_PROXY_SERVER_OPTIONS);
thinStore.setValue(
ThinClientPreferenceConstants.P_PROXY_SERVER_OPTIONS,
proxyServerOptions);
if (getAlertVizServer() != null) {
localStore.setValue(LocalizationConstants.P_ALERT_SERVER,
getAlertVizServer());
}
LocalizationManager.getInstance().setCurrentSite(getSite());
try {
localStore.save();
} catch (IOException e) {
statusHandler.handle(Priority.SIGNIFICANT,
"Unable to persist localization preference store", e);
}
/*
* Have to store the thin client preferences either way to remember the
* JMS and proxy checkboxes correctly
*/
try {
thinStore.save();
} catch (IOException e) {
statusHandler
.handle(Priority.SIGNIFICANT,
"Unable to persist thinclient localization preference store",
e);
}
}
@Override
public boolean validate() {
status = null;
details = null;
// If we don't have a localizationSrv yet, try to use the stored
// preference value.
if (localizationSrv != null) {
// validate proxy
proxyAddress = fullServerName(localizationSrv.getText().trim());
}
if (proxyAddress != null && proxyAddress.length() > 0) {
validateServices();
validatePypies();
} else {
servicesGood = false;
pypiesGood = false;
status = "";
}
if (localizationSrv != null && !localizationSrv.widget.isDisposed()) {
localizationSrv.widget.setForeground(getTextColor(servicesGood
&& pypiesGood));
}
validateJms(servicesGood);
// validate site
if (siteText != null && !siteText.isDisposed()) {
super.setSite(siteText.getText());
}
super.validateSite();
if (siteText != null && !siteText.isDisposed()) {
siteText.setForeground(getTextColor(isSiteGood()));
}
// validate alertviz
// apparently alertvizserver == null means it's alertviz itself
if (alertVizServer != null) {
if (alertVizText != null && !alertVizText.isDisposed()) {
setAlertVizServer(alertVizText.getText());
}
super.validateAlertviz();
if (alertVizText != null && !alertVizText.isDisposed()) {
alertVizText.setBackground(getTextColor(isAlertVizGood()));
}
}
boolean everythingGood = servicesGood && pypiesGood && isSiteGood()
&& isAlertVizGood() && jmsGood;
updateStatus(everythingGood, status, details);
return everythingGood;
}
private void validateServices() {
ConnectivityManager.checkLocalizationServer(
ThinClientUriUtil.getServicesAddress(proxyAddress),
servicesCallback);
}
private void validatePypies() {
ConnectivityManager.checkHttpServer(
ThinClientUriUtil.getPypiesAddress(proxyAddress),
pypiesCallback);
}
/**
* Validates that a connection to JMS works.
*
* @param hasEdexConnection
* if we've successfully connected to edex
*/
private void validateJms(boolean hasEdexConnection) {
if (hasEdexConnection) {
try {
String server = ThinClientUriUtil
.getServicesAddress(proxyAddress);
GetServersResponse response = ConnectivityManager
.checkLocalizationServer(server, false);
ConnectivityManager.checkJmsServer(
response.getJmsConnectionString(), jmsCallback);
} catch (VizException e) {
appendDetails(buildDetails(new ConnectivityResult(false, null,
e)));
jmsGood = false;
}
} else {
// JMS can't be good if we're not connected to edex cause
// then we don't even know where to connect to
jmsGood = false;
}
// If display items are not disposed, update them as needed.
if (autoPullBtn != null && timedPollBtn != null
&& dataRefreshGroup != null && !autoPullBtn.isDisposed()
&& !timedPollBtn.isDisposed() && !dataRefreshGroup.isDisposed()) {
if (jmsGood && !autoPullBtn.isEnabled()) {
autoPullBtn.setEnabled(true);
autoPullBtn.setSelection(true);
timedPollBtn.setSelection(false);
dataRefreshMethod = ThinClientPreferenceConstants.P_DATA_REFRESH_METHOD_PUSH;
dataRefreshGroup.setToolTipText(dataRefreshTooltip);
} else if (!jmsGood && autoPullBtn.isEnabled()) {
autoPullBtn.setEnabled(false);
autoPullBtn.setSelection(false);
timedPollBtn.setSelection(true);
dataRefreshMethod = ThinClientPreferenceConstants.P_DATA_REFRESH_METHOD_POLL;
dataRefreshGroup.setToolTipText(dataRefreshTooltip
+ unableConnectJMS);
}
}
if (!jmsGood
&& (dataRefreshMethod
.equals(ThinClientPreferenceConstants.P_DATA_REFRESH_METHOD_POLL))) {
// Since JMS is now disabled, we're in a good state.
jmsGood = true;
}
}
}

View file

@ -0,0 +1,323 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--
This_software_was_developed_and_/_or_modified_by_Raytheon_Company,
pursuant_to_Contract_DG133W-05-CQ-1067_with_the_US_Government.
U.S._EXPORT_CONTROLLED_TECHNICAL_DATA
This_software_product_contains_export-restricted_data_whose
export/transfer/disclosure_is_restricted_by_U.S._law._Dissemination
to_non-U.S._persons_whether_in_the_United_States_or_abroad_requires
an_export_license_or_other_authorization.
Contractor_Name:________Raytheon_Company
Contractor_Address:_____6825_Pine_Street,_Suite_340
________________________Mail_Stop_B8
________________________Omaha,_NE_68106
________________________402.291.0100
See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for
further_licensing_information.
-->
<!-- loads four panel base data, looks like this
+++++++++++++++++++++++
+ DHR DVL + SRM V +
+++++++++++++++++++++++
+ KDP HC + EET +
+++++++++++++++++++++++
substitution keys:
product the productCode to load
elev a range of elevations to load seperated by two dashes.
-->
<bundle>
<displayList>
<displays xsi:type="d2DMapRenderableDisplay"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<descriptor xsi:type="mapDescriptor">
<resource>
<loadProperties loadWithoutData="true">
<capabilities>
<capability xsi:type="imagingCapability"
interpolationState="false" brightness="1.0" contrast="1.0"
alpha="1.0" />
<capability xsi:type="rangeRingsOverlayCapability" />
</capabilities>
</loadProperties>
<properties isSystemResource="false" isBlinking="false"
isMapLayer="false" isHoverOn="false" isVisible="true">
</properties>
<resourceData xsi:type="blendedResourceData">
<resource>
<loadProperties loadWithoutData="true">
<capabilities>
<capability xsi:type="imagingCapability"
interpolationState="false" brightness="1.0" contrast="1.0"
alpha="1.0" />
<capability xsi:type="rangeRingsOverlayCapability" />
</capabilities>
</loadProperties>
<properties isSystemResource="false" isBlinking="false"
isMapLayer="false" isHoverOn="false" isVisible="true">
</properties>
<resourceData xsi:type="radarResourceData"
isUpdatingOnMetadataOnly="false"
isRequeryNecessaryOnTimeMatch="true" >
<metadataMap>
<mapping key="productCode">
<constraint constraintValue="32"
constraintType="IN" />
</mapping>
<mapping key="icao">
<constraint constraintValue="${icao}"
constraintType="EQUALS" />
</mapping>
<mapping key="pluginName">
<constraint constraintValue="radar" constraintType="EQUALS" />
</mapping>
<mapping key="primaryElevationAngle">
<constraint constraintValue="${elevation}"
constraintType="BETWEEN" />
</mapping>
</metadataMap>
</resourceData>
</resource>
<resource>
<loadProperties loadWithoutData="true">
<capabilities>
<capability xsi:type="imagingCapability"
interpolationState="false" brightness="1.0" contrast="1.0"
alpha="1.0" />
<capability xsi:type="rangeRingsOverlayCapability" />
</capabilities>
</loadProperties>
<properties isSystemResource="false" isBlinking="false"
isMapLayer="false" isHoverOn="false" isVisible="true">
</properties>
<resourceData xsi:type="radarResourceData" mode="SRM8"
isUpdatingOnMetadataOnly="false"
isRequeryNecessaryOnTimeMatch="true" >
<metadataMap>
<mapping key="productCode">
<constraint constraintValue="134"
constraintType="IN" />
</mapping>
<mapping key="icao">
<constraint constraintValue="${icao}"
constraintType="EQUALS" />
</mapping>
<mapping key="pluginName">
<constraint constraintValue="radar" constraintType="EQUALS" />
</mapping>
<mapping key="primaryElevationAngle">
<constraint constraintValue="${elevation}"
constraintType="BETWEEN" />
</mapping>
</metadataMap>
</resourceData>
</resource>
</resourceData>
</resource>
</descriptor>
</displays>
<displays xsi:type="d2DMapRenderableDisplay"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<descriptor xsi:type="mapDescriptor">
<resource>
<loadProperties loadWithoutData="true">
<capabilities>
<capability xsi:type="imagingCapability"
interpolationState="false" brightness="1.0" contrast="1.0"
alpha="1.0" />
<capability xsi:type="rangeRingsOverlayCapability" />
</capabilities>
</loadProperties>
<properties isSystemResource="false" isBlinking="false"
isMapLayer="false" isHoverOn="false" isVisible="true">
</properties>
<resourceData xsi:type="blendedResourceData">
<resource>
<loadProperties loadWithoutData="true">
<capabilities>
<capability xsi:type="imagingCapability"
interpolationState="false" brightness="1.0" contrast="1.0"
alpha="1.0" />
<capability xsi:type="rangeRingsOverlayCapability" />
</capabilities>
</loadProperties>
<properties isSystemResource="false" isBlinking="false"
isMapLayer="false" isHoverOn="false" isVisible="true">
</properties>
<resourceData xsi:type="radarResourceData"
isUpdatingOnMetadataOnly="false"
isRequeryNecessaryOnTimeMatch="true">
<metadataMap>
<mapping key="productCode">
<constraint constraintValue="56"
constraintType="IN" />
</mapping>
<mapping key="icao">
<constraint constraintValue="${icao}"
constraintType="EQUALS" />
</mapping>
<mapping key="pluginName">
<constraint constraintValue="radar" constraintType="EQUALS" />
</mapping>
<mapping key="primaryElevationAngle">
<constraint constraintValue="${elevation}"
constraintType="BETWEEN" />
</mapping>
</metadataMap>
</resourceData>
</resource>
<resource>
<loadProperties loadWithoutData="true">
<capabilities>
<capability xsi:type="imagingCapability"
interpolationState="false" brightness="1.0" contrast="1.0"
alpha="1.0" />
<capability xsi:type="rangeRingsOverlayCapability" />
</capabilities>
</loadProperties>
<properties isSystemResource="false" isBlinking="false"
isMapLayer="false" isHoverOn="false" isVisible="true">
</properties>
<resourceData xsi:type="radarResourceData"
isUpdatingOnMetadataOnly="false"
isRequeryNecessaryOnTimeMatch="true">
<metadataMap>
<mapping key="productCode">
<constraint constraintValue="99"
constraintType="IN" />
</mapping>
<mapping key="icao">
<constraint constraintValue="${icao}"
constraintType="EQUALS" />
</mapping>
<mapping key="pluginName">
<constraint constraintValue="radar" constraintType="EQUALS" />
</mapping>
<mapping key="primaryElevationAngle">
<constraint constraintValue="${elevation}"
constraintType="BETWEEN" />
</mapping>
</metadataMap>
</resourceData>
</resource>
</resourceData>
</resource>
</descriptor>
</displays>
<displays xsi:type="d2DMapRenderableDisplay" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<descriptor xsi:type="mapDescriptor">
<resource>
<loadProperties loadWithoutData="true">
<capabilities>
<capability xsi:type="imagingCapability" interpolationState="false" brightness="1.0" contrast="1.0" alpha="1.0" />
<capability xsi:type="rangeRingsOverlayCapability" />
</capabilities>
</loadProperties>
<properties isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="true">
</properties>
<resourceData xsi:type="blendedResourceData">
<resource>
<loadProperties loadWithoutData="true">
<capabilities>
<capability xsi:type="imagingCapability" interpolationState="false" brightness="1.0" contrast="1.0" alpha="1.0" />
<capability xsi:type="rangeRingsOverlayCapability" />
</capabilities>
</loadProperties>
<properties isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="true">
</properties>
<resourceData xsi:type="radarResourceData" isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true">
<metadataMap>
<mapping key="productCode">
<constraint constraintValue="163" constraintType="IN" />
</mapping>
<mapping key="icao">
<constraint constraintValue="${icao}" constraintType="EQUALS" />
</mapping>
<mapping key="pluginName">
<constraint constraintValue="radar" constraintType="EQUALS" />
</mapping>
<mapping key="primaryElevationAngle">
<constraint constraintValue="${elevation}" constraintType="BETWEEN" />
</mapping>
</metadataMap>
</resourceData>
</resource>
<resource>
<loadProperties loadWithoutData="true">
<capabilities>
<capability xsi:type="imagingCapability" interpolationState="false" brightness="1.0" contrast="1.0" alpha="1.0" />
<capability xsi:type="rangeRingsOverlayCapability" />
</capabilities>
</loadProperties>
<properties isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="true">
</properties>
<resourceData xsi:type="radarResourceData" isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true">
<metadataMap>
<mapping key="productCode">
<constraint constraintValue="177" constraintType="IN" />
</mapping>
<mapping key="icao">
<constraint constraintValue="${icao}" constraintType="EQUALS" />
</mapping>
<mapping key="pluginName">
<constraint constraintValue="radar" constraintType="EQUALS" />
</mapping>
<mapping key="primaryElevationAngle">
<constraint constraintValue="${elevation}" constraintType="BETWEEN" />
</mapping>
</metadataMap>
</resourceData>
</resource>
</resourceData>
</resource>
</descriptor>
</displays><displays xsi:type="d2DMapRenderableDisplay" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<descriptor xsi:type="mapDescriptor">
<resource>
<loadProperties loadWithoutData="true">
<capabilities>
<capability xsi:type="imagingCapability" interpolationState="false" brightness="1.0" contrast="1.0" alpha="1.0" />
<capability xsi:type="rangeRingsOverlayCapability" />
</capabilities>
</loadProperties>
<properties isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="true">
</properties>
<resourceData xsi:type="blendedResourceData">
<resource>
<loadProperties loadWithoutData="true">
<capabilities>
<capability xsi:type="imagingCapability" interpolationState="false" brightness="1.0" contrast="1.0" alpha="1.0" />
<capability xsi:type="rangeRingsOverlayCapability" />
</capabilities>
</loadProperties>
<properties isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="true">
</properties>
<resourceData xsi:type="radarResourceData" isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true">
<metadataMap>
<mapping key="productCode">
<constraint constraintValue="135" constraintType="IN" />
</mapping>
<mapping key="icao">
<constraint constraintValue="${icao}" constraintType="EQUALS" />
</mapping>
<mapping key="pluginName">
<constraint constraintValue="radar" constraintType="EQUALS" />
</mapping>
<mapping key="primaryElevationAngle">
<constraint constraintValue="${elevation}" constraintType="BETWEEN" />
</mapping>
</metadataMap>
</resourceData>
</resource>
</resourceData>
</resource>
</descriptor>
</displays>
</displayList>
</bundle>

View file

@ -7,15 +7,19 @@
________________________Omaha,_NE_68106 ________________________402.291.0100
See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for further_licensing_information. -->
<menuTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<contribute xsi:type="subMenu" menuText="NEXRAD Stations"
<contribute xsi:type="subMenu" menuText="NEXRAD - Local"
id="RadarMenuDialRadarsSubMenu">
<contribute xsi:type="subinclude" fileName="menus/radar/dialRadars.xml" />
</contribute>
<contribute xsi:type="subMenu" menuText="NEXRAD - All"
id="RadarMenuDialAllRadarsSubMenu">
<contribute xsi:type="subinclude" fileName="menus/radar/dialAllRadars.xml" />
</contribute>
<contribute xsi:type="subMenu" menuText="TDWR Stations"
id="RadarMenuTwdrRadarsSubMenu">
<contribute xsi:type="subinclude" fileName="menus/radar/tdwrRadars.xml" />
</contribute>
<contribute xsi:type="titleItem" titleText="------ FNEXRAD Composites ------"
<contribute xsi:type="titleItem" titleText="------ CONUS Composites ------"
id="RadarMosaic" />
<!-- Unidata Composite -->
<contribute xsi:type="bundleItem" file="bundles/DefaultRadarComposite.xml"
@ -54,7 +58,7 @@
<substitute key="colormap" value="Radar/8-bit STP"/>
<substitute key="interpolate" value="true"/>
</contribute>
<contribute xsi:type="titleItem" titleText="------ Mosaic ------"
<contribute xsi:type="titleItem" titleText="------ Local Mosaic ------"
id="RadarMosaic" />
<contribute xsi:type="bundleItem" file="bundles/DefaultRadarMosaic.xml"
menuText="N0Q - Base Reflectivity" id="Radar05Reflectivity">

View file

@ -19,6 +19,12 @@
further_licensing_information.
-->
<menuTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<contribute xsi:type="bundleItem"
file="bundles/DefaultRadarFourPanel.xml" menuText="4-Panel Z+DVL/SRM+V/KDP+HC/EET"
id="05dualpolbasedata">
<substitute key="icao" value="${icao}" />
<substitute key="elevation" value="0.0--0.5" />
</contribute>
<contribute xsi:type="titleItem" id="${icao}4PanelZ+SRMZDR+VKDP+HCCC+SW"
titleText="------ 4-Panel Z+SRM/ZDR+V/KDP+HC/CC ------" />
<contribute xsi:type="bundleItem"

View file

@ -16,7 +16,7 @@ deploy.gfesuite=true
esb.overwrite=false
# a colon (:) separated list of localization sites; the associated
# localization files will be deployed for the specified site.
localization.sites=OAX
localization.sites=BOU
# the python installation directory.
python.root.directory=/awips2/python

View file

@ -143,7 +143,7 @@
</condition>
<!-- Set the edex localization site -->
<property name="def.site.identifier" value="OAX"/>
<property name="def.site.identifier" value="BOU"/>
<condition property="site.identifier" value="%siteIdentifier" else="${def.site.identifier}">
<isset property="installer"/>
</condition>

View file

@ -93,19 +93,91 @@ public class RadarMenuUtil extends AbstractMenuUtil implements
public void createMenus() {
statusHandler.info("Creating radar menus...");
// retrieve the local radars from
// radarsInUse.txt
RadarsInUseUtil.setParsed(false);
VariableSubstitution[] vars = null;
// loop through all the radars
Map<String, List<Double>> map = TerminalRadarUtils
.parseTerminalRadarFile();
List<String> radars = RadarsInUseUtil.getSite(getSite(),
RadarsInUseUtil.LOCAL_CONSTANT);
String path = "menus" + File.separator + "radar" + File.separator;
CommonMenuContributionFile menuContributionFile = new CommonMenuContributionFile();
CommonIncludeMenuItem includeMenuItem = null;
VariableSubstitution[] vars = null;
if (radars.size() == 0) {
menuContributionFile.contribution = new CommonIncludeMenuItem[1];
} else {
menuContributionFile.contribution = new CommonIncludeMenuItem[radars
.size()];
}
// loop through all the radars
Map<String, List<Double>> map = TerminalRadarUtils
.parseTerminalRadarFile();
if (radars.size() > 0) {
for (int i = radars.size() - 1; i >= 0; i--) {
includeMenuItem = new CommonIncludeMenuItem();
// check for terminal radars
boolean terminal = TerminalRadarUtils.isTerminalRadar(radars
.get(i).toLowerCase());
if (terminal) {
includeMenuItem.fileName = new File(path + "dualPol"
+ File.separator + "baseTerminalLocalRadarMenu.xml");
List<Double> elevations = map.get(radars.get(i));
vars = new VariableSubstitution[(elevations.size() + 1)
+ NUM_POSSIBLE_RADARS + 1];
vars[0] = new VariableSubstitution();
vars[0].key = "icao";
vars[0].value = radars.get(i);
for (int j = 1; j <= elevations.size(); j++) {
vars[j] = new VariableSubstitution();
vars[j].key = "elev" + (j - 1);
vars[j].value = String.valueOf(elevations.get(j - 1));
}
for (int j = 1; j <= elevations.size(); j++) {
vars[j + elevations.size()] = new VariableSubstitution();
vars[j + elevations.size()].key = "suppressErrors"
+ (j - 1);
vars[j + elevations.size()].value = "false";
}
for (int j = elevations.size() + 1; j <= NUM_POSSIBLE_RADARS; j++) {
vars[j + elevations.size()] = new VariableSubstitution();
vars[j + elevations.size()].key = "suppressErrors"
+ (j - 1);
vars[j + elevations.size()].value = "true";
}
includeMenuItem.substitutions = vars;
} else {
if (SsssRadarUtil.isSsssRadar(radars.get(i).toLowerCase())) {
String ssssRadar = radars.get(i).toLowerCase();
includeMenuItem.fileName = new File(path + ssssRadar
+ File.separator + "baseLocalRadarMenu.xml");
} else {
includeMenuItem.fileName = new File(path + "dualPol"
+ File.separator + "baseLocalRadarMenu.xml");
}
vars = new VariableSubstitution[1];
vars[0] = new VariableSubstitution();
vars[0].key = "icao";
vars[0].value = radars.get(i);
includeMenuItem.substitutions = vars;
}
includeMenuItem.visibleOnActionSet = new String[] { "com.raytheon.uf.viz.d2d.ui.D2DActionSet" };
includeMenuItem.installationLocation = "menu:org.eclipse.ui.main.menu?after=satellite";
menuContributionFile.contribution[radars.size() - 1 - i] = includeMenuItem;
}
} else {
includeMenuItem = new CommonIncludeMenuItem();
menuContributionFile.contribution[0] = includeMenuItem;
menuContributionFile.contribution[0].fileName = new File("");
}
// Build radar menu for all stations
List<String> radars = RadarsInUseUtil.getSite(getSite(),
RadarsInUseUtil.MOSAIC_CONSTANT);
toXml(menuContributionFile, "menus" + File.separator + "radar"
+ File.separator + "index.xml");
// now on to dial radars
radars = RadarsInUseUtil.getSite(getSite(),
RadarsInUseUtil.DIAL_CONSTANT);
// create MenuTemplateFile for the dialRadars.xml
MenuTemplateFile menuTemplateFile = new MenuTemplateFile();
menuTemplateFile.contributions = new CommonIncludeMenuContribution[radars
.size()];
@ -167,121 +239,8 @@ public class RadarMenuUtil extends AbstractMenuUtil implements
}
Arrays.sort(menuTemplateFile.contributions);
// only want 18 radars in the dial radar menu, otherwise put it in
// only want 12 radars in the dial radar menu, otherwise put it in
// submenus
if (menuTemplateFile.contributions.length > 18) {
double numMenus = Math
.ceil(((double) menuTemplateFile.contributions.length) / 18);
int perMenu = (int) (menuTemplateFile.contributions.length
/ numMenus + 1);
statusHandler.info("For " + menuTemplateFile.contributions.length
+ " dial radars, menus have increased to " + (int) numMenus
+ " with an average of " + perMenu + " per menu");
List<CommonAbstractMenuContribution> list = Arrays
.asList(menuTemplateFile.contributions);
menuTemplateFile.contributions = new CommonSubmenuContribution[(int) numMenus];
int count = 0;
for (int i = 0; i < numMenus; i++) {
menuTemplateFile.contributions[i] = new CommonSubmenuContribution();
int numCount = 0;
if (list.size() - count < perMenu) {
numCount = list.size() - count;
((CommonSubmenuContribution) menuTemplateFile.contributions[i]).contributions = new CommonIncludeMenuContribution[list
.size() - count];
((CommonSubmenuContribution) menuTemplateFile.contributions[i]).menuText = ((CommonIncludeMenuContribution) list
.get(count)).substitutions[0].value
+ "-"
+ ((CommonIncludeMenuContribution) list.get(perMenu
* i + list.size() - count - 1)).substitutions[0].value;
} else {
numCount = perMenu;
((CommonSubmenuContribution) menuTemplateFile.contributions[i]).contributions = new CommonIncludeMenuContribution[perMenu];
((CommonSubmenuContribution) menuTemplateFile.contributions[i]).menuText = ((CommonIncludeMenuContribution) list
.get(count)).substitutions[0].value
+ "-"
+ ((CommonIncludeMenuContribution) list.get(perMenu
* (i + 1) - 1)).substitutions[0].value;
}
for (int j = 0; j < numCount; j++) {
((CommonSubmenuContribution) menuTemplateFile.contributions[i]).contributions[j] = list
.get(count);
count++;
}
}
}
toXml(menuTemplateFile, "menus" + File.separator + "radar"
+ File.separator + "dialRadars.xml");
// now on to TDWR radars
radars = RadarsInUseUtil.getSite(getSite(),
RadarsInUseUtil.TDWR_CONSTANT);
// create MenuTemplateFile for the dialRadars.xml
menuTemplateFile = new MenuTemplateFile();
menuTemplateFile.contributions = new CommonIncludeMenuContribution[radars
.size()];
includeMenuContribution = null;
for (int i = radars.size() - 1; i >= 0; i--) {
includeMenuContribution = new CommonIncludeMenuContribution();
includeMenuContribution.substitutions = vars;
boolean terminal = TerminalRadarUtils.isTerminalRadar(radars.get(i)
.toLowerCase());
if (terminal) {
List<Double> elevations = map.get(radars.get(i));
includeMenuContribution.fileName = new File(path + "dualPol"
+ File.separator + File.separator
+ "baseTerminalLocalRadarMenu.xml");
vars = new VariableSubstitution[(elevations.size() + 1)
+ NUM_POSSIBLE_RADARS + 1];
vars[0] = new VariableSubstitution();
vars[0].key = "icao";
vars[0].value = radars.get(i);
for (int j = 1; j <= elevations.size(); j++) {
vars[j] = new VariableSubstitution();
vars[j].key = "elev" + (j - 1);
vars[j].value = String.valueOf(elevations.get(j - 1));
}
for (int j = 1; j <= elevations.size(); j++) {
vars[j + elevations.size()] = new VariableSubstitution();
vars[j + elevations.size()].key = "suppressErrors"
+ (j - 1);
vars[j + elevations.size()].value = "false";
}
for (int j = elevations.size() + 1; j <= NUM_POSSIBLE_RADARS; j++) {
vars[j + elevations.size()] = new VariableSubstitution();
vars[j + elevations.size()].key = "suppressErrors"
+ (j - 1);
vars[j + elevations.size()].value = "true";
}
includeMenuContribution.substitutions = vars;
terminal = true;
} else {
if (SsssRadarUtil.isSsssRadar(radars.get(i).toLowerCase())) {
String ssssRadar = radars.get(i).toLowerCase();
includeMenuContribution.fileName = new File(path
+ ssssRadar + File.separator
+ "baseLocalRadarMenu.xml");
} else {
includeMenuContribution.fileName = new File(path
+ "dualPol" + File.separator
+ "baseLocalRadarMenu.xml");
}
vars = new VariableSubstitution[1];
vars[0] = new VariableSubstitution();
vars[0].key = "icao";
vars[0].value = radars.get(i);
includeMenuContribution.substitutions = vars;
}
menuTemplateFile.contributions[radars.size() - 1 - i] = includeMenuContribution;
}
Arrays.sort(menuTemplateFile.contributions);
// only want 12 radars in each menu, otherwise put it in submenus
if (menuTemplateFile.contributions.length > 12) {
double numMenus = Math
.ceil(((double) menuTemplateFile.contributions.length) / 12);
@ -325,7 +284,68 @@ public class RadarMenuUtil extends AbstractMenuUtil implements
}
toXml(menuTemplateFile, "menus" + File.separator + "radar"
+ File.separator + "tdwrRadars.xml");
+ File.separator + "dialRadars.xml");
CommonSubmenuContribution submenuContribution = new CommonSubmenuContribution();
List<CommonAbstractMenuContribution> contributions = new ArrayList<CommonAbstractMenuContribution>();
// now on to asr radars
radars = RadarsInUseUtil.getSite(getSite(),
RadarsInUseUtil.ASR_CONSTANT);
if (!radars.isEmpty()) {
submenuContribution.contributions = new CommonAbstractMenuContribution[radars
.size()];
submenuContribution.menuText = "ASR-11 Radar";
submenuContribution.id = "asr11radarsubmenu";
menuTemplateFile = new MenuTemplateFile();
for (int i = radars.size() - 1; i >= 0; i--) {
includeMenuContribution = new CommonIncludeMenuContribution();
vars = new VariableSubstitution[1];
vars[0] = new VariableSubstitution();
vars[0] = new VariableSubstitution();
vars[0].key = "icao";
vars[0].value = radars.get(i);
includeMenuContribution.substitutions = vars;
includeMenuContribution.fileName = new File(path + "dualPol"
+ File.separator + "asrRadars.xml");
submenuContribution.contributions[i] = includeMenuContribution;
}
contributions.add(submenuContribution);
}
// now on to arsr radars
radars = RadarsInUseUtil.getSite(getSite(),
RadarsInUseUtil.ARSR_CONSTANT);
if (!radars.isEmpty()) {
submenuContribution = new CommonSubmenuContribution();
submenuContribution.contributions = new CommonAbstractMenuContribution[radars
.size()];
submenuContribution.menuText = "ARSR-4 Radar";
submenuContribution.id = "arsr4radarsubmenu";
for (int i = radars.size() - 1; i >= 0; i--) {
includeMenuContribution = new CommonIncludeMenuContribution();
vars = new VariableSubstitution[1];
vars[0] = new VariableSubstitution();
vars[0].key = "icao";
vars[0].value = radars.get(i);
includeMenuContribution.fileName = new File(path + "dualPol"
+ File.separator + "arsrRadars.xml");
includeMenuContribution.substitutions = vars;
submenuContribution.contributions[radars.size() - 1 - i] = includeMenuContribution;
}
contributions.add(submenuContribution);
}
if (contributions.isEmpty()) {
CommonSeparatorMenuContribution separatorCont = new CommonSeparatorMenuContribution();
separatorCont.id = "emptyAirportRadarId";
contributions.add(separatorCont);
}
menuTemplateFile.contributions = contributions
.toArray(new CommonAbstractMenuContribution[contributions
.size()]);
toXml(menuTemplateFile, "menus" + File.separator + "radar"
+ File.separator + "airportRadars.xml");
menuContributionFile = new CommonMenuContributionFile();

View file

@ -2,20 +2,16 @@
# LOCAL_RADARS (including terminal) - MUST HAVE THIS LINE
# DIAL_RADARS - MUST HAVE THIS LINE
kabr
kpux
kcys
kdmx
kgjx
kgld
kuex
keax
karx
kmpx
klnx
kdvn
kudx
kfsd
ktwx
tmsp
kddc
kama
kabx
# TDWR_RADARS - MUST HAVE THIS LINE
tadw

View file

@ -52,7 +52,6 @@ import com.raytheon.uf.common.status.UFStatus.Priority;
* ------------ ---------- ----------- --------------------------
* Jul 14, 2010 mnash Initial creation
* Feb 15, 2016 5244 nabowle Replace deprecated LocalizationFile methods.
* Jun 23, 2016 mjames@ucar Add TDWR radars
*
*
* </pre>
@ -76,8 +75,6 @@ public class RadarsInUseUtil {
public static final String MOSAIC_CONSTANT = "MOSAIC_RADARS";
public static final String TDWR_CONSTANT = "TDWR_RADARS";
private static final IUFStatusHandler handler = UFStatus
.getHandler(RadarsInUseUtil.class);

View file

@ -41,7 +41,7 @@ if [ -d ${RPM_BUILD_ROOT} ]; then
fi
%build
# Build all WFO site localization Map Scales (States.xml, WFO.xml)
# Build all WFO site localization Map Scales (Regional.xml, States.xml, WFO.xml)
BUILD_DIR=%{_baseline_workspace}/rpms/awips2.core/Installer.localization/
UTIL=%{_baseline_workspace}/localization/utility
file=$BUILD_DIR/wfo.dat

View file

@ -0,0 +1,150 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--
This_software_was_developed_and_/_or_modified_by_Raytheon_Company,
pursuant_to_Contract_DG133W-05-CQ-1067_with_the_US_Government.
U.S._EXPORT_CONTROLLED_TECHNICAL_DATA
This_software_product_contains_export-restricted_data_whose
export/transfer/disclosure_is_restricted_by_U.S._law._Dissemination
to_non-U.S._persons_whether_in_the_United_States_or_abroad_requires
an_export_license_or_other_authorization.
Contractor_Name:________Raytheon_Company
Contractor_Address:_____6825_Pine_Street,_Suite_340
________________________Mail_Stop_B8
________________________Omaha,_NE_68106
________________________402.291.0100
See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for
further_licensing_information.
-->
<bundle>
<displayList>
<displays xsi:type="d2DMapRenderableDisplay" scale="Regional" density="1.0" magnification="1.0" zoomLevel="1.0" mapCenter="LONGITUDE LATITUDE 0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<descriptor xsi:type="mapDescriptor">
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
<capability xsi:type="colorableCapability" colorAsString="#9b9b9b"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
<properties renderingOrderId="MAP_OUTLINE" isSystemResource="false" isBlinking="false" isMapLayer="true" isHoverOn="false" opacity="1.0" isVisible="true">
<pdProps maxDisplayWidth="100000000" minDisplayWidth="0"/>
</properties>
<resourceData xsi:type="mapResourceGroupData">
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
<capability xsi:type="colorableCapability" colorAsString="#9b9b9b"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
<properties isSystemResource="false" isBlinking="false" isMapLayer="true" isHoverOn="false" opacity="1.0" isVisible="true">
<pdProps maxDisplayWidth="100000000" minDisplayWidth="0"/>
</properties>
<resourceData xsi:type="dbMapResourceData">
<mapName>World</mapName>
<table>mapdata.world</table>
<geomField>the_geom</geomField>
<constraint>name not in ('CANADA', 'MEXICO', 'UNITED STATES')</constraint>
</resourceData>
</resource>
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
<capability xsi:type="colorableCapability" colorAsString="#9b9b9b"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
<properties isSystemResource="false" isBlinking="false" isMapLayer="true" isHoverOn="false" opacity="1.0" isVisible="true">
<pdProps maxDisplayWidth="100000000" minDisplayWidth="750000"/>
</properties>
<resourceData xsi:type="dbMapResourceData">
<mapName>State Boundaries</mapName>
<table>mapdata.states</table>
<geomField>the_geom</geomField>
</resourceData>
</resource>
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
<capability xsi:type="colorableCapability" colorAsString="#9b9b9b"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
<properties isSystemResource="false" isBlinking="false" isMapLayer="true" isHoverOn="false" opacity="1.0" isVisible="true">
<pdProps maxDisplayWidth="100000000" minDisplayWidth="0"/>
</properties>
<resourceData xsi:type="dbMapResourceData">
<mapName>Canada</mapName>
<table>mapdata.canada</table>
<geomField>the_geom</geomField>
</resourceData>
</resource>
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
<capability xsi:type="colorableCapability" colorAsString="#9b9b9b"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
<properties isSystemResource="false" isBlinking="false" isMapLayer="true" isHoverOn="false" opacity="1.0" isVisible="true">
<pdProps maxDisplayWidth="100000000" minDisplayWidth="0"/>
</properties>
<resourceData xsi:type="dbMapResourceData">
<mapName>Mexico</mapName>
<table>mapdata.mexico</table>
<geomField>the_geom</geomField>
</resourceData>
</resource>
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
<capability xsi:type="colorableCapability" colorAsString="#9b9b9b"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
<properties isSystemResource="false" isBlinking="false" isMapLayer="true" isHoverOn="false" opacity="1.0" isVisible="true">
<pdProps maxDisplayWidth="750000" minDisplayWidth="0"/>
</properties>
<resourceData xsi:type="dbMapResourceData">
<mapName>County Boundaries</mapName>
<table>mapdata.county</table>
</resourceData>
</resource>
<mapName>State/County Boundaries</mapName>
</resourceData>
</resource>
<timeMatcher xsi:type="d2DTimeMatcher" loadMode="VALID_TIME_SEQ" deltaFilter="0" forecastFilter="0"/>
<numberOfFrames>12</numberOfFrames>
<gridGeometry envelopeMaxY="2901076.347219158" envelopeMinY="810930.3906458529" envelopeMaxX="697573.8190745931" envelopeMinX="-1392571.7793350497" rangeY="0 9999" rangeX="0 9999">
<CRS>PROJCS["Lambert_Conformal_Conic_1SP",
GEOGCS["WGS84(DD)",
DATUM["WGS84",
SPHEROID["WGS84", 6378137.0, 298.257223563]],
PRIMEM["Greenwich", 0.0],
UNIT["degree", 0.017453292519943295],
AXIS["Geodetic longitude", EAST],
AXIS["Geodetic latitude", NORTH]],
PROJECTION["Lambert_Conformal_Conic_1SP"],
PARAMETER["semi_major", 6371200.0],
PARAMETER["semi_minor", 6371200.0],
PARAMETER["central_meridian", LONGITUDE],
PARAMETER["latitude_of_origin", LATITUDE],
PARAMETER["false_easting", 0.0],
PARAMETER["false_northing", 0.0],
UNIT["m", 1.0],
AXIS["Easting", EAST],
AXIS["Northing", NORTH]]</CRS>
</gridGeometry>
</descriptor>
</displays>
</displayList>
</bundle>