diff --git a/edexOsgi/com.raytheon.edex.plugin.radar/src/com/raytheon/edex/plugin/radar/util/RadarMenuUtil.java b/edexOsgi/com.raytheon.edex.plugin.radar/src/com/raytheon/edex/plugin/radar/util/RadarMenuUtil.java index 15175b5359..321ea25881 100644 --- a/edexOsgi/com.raytheon.edex.plugin.radar/src/com/raytheon/edex/plugin/radar/util/RadarMenuUtil.java +++ b/edexOsgi/com.raytheon.edex.plugin.radar/src/com/raytheon/edex/plugin/radar/util/RadarMenuUtil.java @@ -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> map = TerminalRadarUtils - .parseTerminalRadarFile(); + List 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> 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 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 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 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 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 contributions = new ArrayList(); + + // 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();