X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Fjws2%2FPreferredServiceRegistry.java;fp=src%2Fjalview%2Fws%2Fjws2%2FPreferredServiceRegistry.java;h=45af92510fe6e3bb40a1d1020b7a9f909245801d;hb=ee9a37025c3bf1a79f11f53ff16bb5597ce0b52b;hp=9e7438c80a418218b33fb9fb790bae1aee553790;hpb=01bf99892a24279c17fc18c19de0d1661f1faff2;p=jalview.git diff --git a/src/jalview/ws/jws2/PreferredServiceRegistry.java b/src/jalview/ws/jws2/PreferredServiceRegistry.java index 9e7438c..45af925 100644 --- a/src/jalview/ws/jws2/PreferredServiceRegistry.java +++ b/src/jalview/ws/jws2/PreferredServiceRegistry.java @@ -10,7 +10,6 @@ import jalview.ws.api.ServiceWithParameters; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.beans.PropertyChangeSupport; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -18,8 +17,6 @@ import java.util.HashSet; import java.util.Hashtable; import java.util.List; import java.util.Map; -import java.util.Vector; - import javax.swing.JMenu; import javax.swing.JMenuItem; @@ -37,7 +34,7 @@ public class PreferredServiceRegistry return us; } - List ourServices = new ArrayList(); + List ourServices = new ArrayList<>(); /** * forget about any known services @@ -48,81 +45,59 @@ public class PreferredServiceRegistry } public void populateWSMenuEntry(List services, - PropertyChangeSupport changeSupport, - JMenu jws2al, final AlignFrame alignFrame, String typeFilter) + PreferredServiceChangeListener changeListener, JMenu menu, + final AlignFrame alignFrame, String typeFilter) { /** * eventually, JWS2 services will appear under the same align/etc submenus. * for moment we keep them separate. */ + ourServices.addAll(services); JMenu atpoint; - List enumerableServices = new ArrayList<>(); - // jws2al.removeAll(); + + List oneshotServices = new ArrayList<>(); + List interactiveServices = new ArrayList<>(); Map preferredHosts = new HashMap<>(); Map> alternates = new HashMap<>(); - for (ServiceWithParameters service : services) + + for (var service : services) + { + if (service.isInteractiveUpdate()) + interactiveServices.add(service); + else + oneshotServices.add(service); + } + for (var service : interactiveServices) { - ourServices.add(service); - // TODO: check this behaves with refactored serviceType to getName - if (!service.isInteractiveUpdate()) + if (!preferredHosts.containsKey(service.getName())) { - // add 'one shot' services to be displayed using the classic menu - // structure - enumerableServices.add(service); + var preferred = getPreferredServiceFor(alignFrame, service.getName()); + preferredHosts.put(service.getName(), (preferred != null) ? preferred : service); } - else + var ph = alternates.getOrDefault(service.getName(), new ArrayList<>()); + if (!preferredHosts.containsValue(service)) { - if (!preferredHosts.containsKey(service.getName())) - { - ServiceWithParameters preferredInstance = getPreferredServiceFor( - alignFrame, service.getName()); - if (preferredInstance != null) - { - preferredHosts.put(service.getName(), preferredInstance); - } - else - { - preferredHosts.put(service.getName(), service); - } - } - List ph = alternates.get(service.getName()); - if (preferredHosts.get(service.getName()) != service) - { - if (ph == null) - { - ph = new ArrayList<>(); - } - ph.add(service); - alternates.put(service.getName(), ph); - } + ph.add(service); + alternates.putIfAbsent(service.getName(), ph); } - } // create GUI element for classic services - addEnumeratedServices(jws2al, alignFrame, enumerableServices); + addEnumeratedServices(menu, alignFrame, oneshotServices); // and the instantaneous services for (final ServiceWithParameters service : preferredHosts.values()) { - atpoint = JvSwingUtils.findOrCreateMenu(jws2al, + atpoint = JvSwingUtils.findOrCreateMenu(menu, service.getServiceType()); - JMenuItem hitm; if (atpoint.getItemCount() > 1) { // previous service of this type already present atpoint.addSeparator(); } + JMenuItem hitm; atpoint.add(hitm = new JMenuItem(service.getHostURL())); hitm.setForeground(Color.blue); - hitm.addActionListener(new ActionListener() - { - - @Override - public void actionPerformed(ActionEvent e) - { - Desktop.showUrl(service.getHostURL()); - } - }); + hitm.addActionListener(e -> Desktop.showUrl(service.getHostURL())); hitm.setToolTipText(JvSwingUtils.wrapTooltip(false, MessageManager.getString("label.open_jabaws_web_page"))); @@ -139,25 +114,9 @@ public class PreferredServiceRegistry JMenuItem itm; hitm.add(itm = new JMenuItem(sv.getHostURL())); itm.setForeground(Color.blue); - itm.addActionListener(new ActionListener() - { - - @Override - public void actionPerformed(ActionEvent arg0) - { - new Thread(new Runnable() - { - @Override - public void run() - { - setPreferredServiceFor(alignFrame, sv.getName(), - sv.getServiceType(), sv); - changeSupport.firePropertyChange("services", - new Vector(), services); - }; - }).start(); - - } + itm.addActionListener(e -> { + setPreferredServiceFor(alignFrame, sv.getName(), sv.getServiceType(), sv); + changeListener.preferredServiceChanged(sv); }); } }