Install a plugin located in a JAR file.
(String jar, String s)
| 834 | |
| 835 | /** Install a plugin located in a JAR file. */ |
| 836 | void installJarPlugin(String jar, String s) { |
| 837 | addSorted = false; |
| 838 | Menu menu; |
| 839 | s = s.trim(); |
| 840 | if (s.startsWith("Plugins>")) { |
| 841 | int firstComma = s.indexOf(','); |
| 842 | if (firstComma==-1 || firstComma<=8) |
| 843 | menu = null; |
| 844 | else { |
| 845 | String name = s.substring(8, firstComma); |
| 846 | menu = getPluginsSubmenu(name); |
| 847 | } |
| 848 | } else if (s.startsWith("\"") || s.startsWith("Plugins")) { |
| 849 | String name = getSubmenuName(jar); |
| 850 | if (name!=null) |
| 851 | menu = getPluginsSubmenu(name); |
| 852 | else |
| 853 | menu = pluginsMenu; |
| 854 | addSorted = true; |
| 855 | } else { |
| 856 | int firstQuote = s.indexOf('"'); |
| 857 | String name = firstQuote<0 ? s : s.substring(0, firstQuote).trim(); |
| 858 | int comma = name.indexOf(','); |
| 859 | if (comma >= 0) |
| 860 | name = name.substring(0, comma); |
| 861 | if (name.startsWith("Help>About")) // for backward compatibility |
| 862 | name = "Help>About Plugins"; |
| 863 | menu = getMenu(name); |
| 864 | } |
| 865 | int firstQuote = s.indexOf('"'); |
| 866 | if (firstQuote==-1) |
| 867 | return; |
| 868 | s = s.substring(firstQuote, s.length()); // remove menu |
| 869 | if (menu!=null) { |
| 870 | addPluginSeparatorIfNeeded(menu); |
| 871 | addPluginItem(menu, s); |
| 872 | addSorted = false; |
| 873 | } |
| 874 | String menuEntry = s; |
| 875 | if (s.startsWith("\"")) { |
| 876 | int quote = s.indexOf('"', 1); |
| 877 | menuEntry = quote<0?s.substring(1):s.substring(1, quote); |
| 878 | } else { |
| 879 | int comma = s.indexOf(','); |
| 880 | if (comma > 0) |
| 881 | menuEntry = s.substring(0, comma); |
| 882 | } |
| 883 | if (duplicateCommand) { |
| 884 | if (jarError==null) jarError = ""; |
| 885 | addJarErrorHeading(jar); |
| 886 | String jar2 = (String)menuEntry2jarFile.get(menuEntry); |
| 887 | if (jar2 != null && jar2.startsWith(pluginsPath)) |
| 888 | jar2 = jar2.substring(pluginsPath.length()); |
| 889 | jarError += " Duplicate command: " + s |
| 890 | + (jar2 != null ? " (already in " + jar2 + ")" |
| 891 | : "") + "\n"; |
| 892 | } else |
| 893 | menuEntry2jarFile.put(menuEntry, jar); |
no test coverage detected