3 import java.awt.BorderLayout;
4 import java.awt.event.ActionEvent;
6 import java.util.Vector;
8 import javax.swing.JCheckBox;
9 import javax.swing.JLabel;
10 import javax.swing.JOptionPane;
11 import javax.swing.JPanel;
12 import javax.swing.JTextField;
14 import jalview.bin.Cache;
15 import jalview.jbgui.GWsPreferences;
17 public class WsPreferences extends GWsPreferences
20 public WsPreferences()
23 initFromPreferences();
26 Vector<String> wsUrls,oldUrls;
27 private boolean needWsMenuUpdate;
28 private boolean oldJws1,oldJws2,oldIndexByHost,oldIndexByType,oldEnfin;
29 private void initFromPreferences()
32 wsUrls = jalview.ws.jws2.Jws2Discoverer.getServiceUrls();
34 oldUrls = new Vector<String>(wsUrls);
37 wsUrls=new Vector<String>();
40 enableEnfinServices.setSelected(oldEnfin=Cache.getDefault(
41 "SHOW_ENFIN_SERVICES", true));
42 enableJws1Services.setSelected(oldJws1=Cache.getDefault("SHOW_JWS1_SERVICES",
44 enableJws2Services.setSelected(oldJws2=Cache.getDefault("SHOW_JWS2_SERVICES",
46 indexByHost.setSelected(oldIndexByHost=Cache.getDefault("WSMENU_BYHOST", true));
47 indexByType.setSelected(oldIndexByType=Cache.getDefault("WSMENU_BYTYPE", true));
49 private void updateList() {
50 wsList.setListData(wsUrls);
52 private void updateServiceList() {
53 jalview.ws.jws2.Jws2Discoverer.setServiceUrls(wsUrls);
56 * @see jalview.jbgui.GWsPreferences#deleteWsUrl_actionPerformed(java.awt.event.ActionEvent)
59 protected void deleteWsUrl_actionPerformed(ActionEvent e)
61 int sel = wsList.getSelectedIndex();
64 wsUrls.removeElementAt(sel);
70 * @see jalview.jbgui.GWsPreferences#editWsUrl_actionPerformed(java.awt.event.ActionEvent)
73 protected void editWsUrl_actionPerformed(ActionEvent e)
75 int sel = wsList.getSelectedIndex();
78 String url=editUrl(wsUrls.elementAt(sel),"Edit JWS2 URL");
81 int present = wsUrls.indexOf(url);
84 wsUrls.setElementAt(url,sel);
89 wsUrls.removeElementAt(sel);
97 void updateWsMenuConfig(boolean old) {
99 wsUrls = (oldUrls==null) ? null : new Vector(oldUrls);
101 Cache.setProperty("SHOW_ENFIN_SERVICES", Boolean.valueOf(old ? oldEnfin : enableEnfinServices.isSelected()).toString());
102 Cache.setProperty("SHOW_JWS1_SERVICES", Boolean.valueOf(old ? oldJws1 : enableJws1Services.isSelected()).toString());
103 Cache.setProperty("SHOW_JWS2_SERVICES", Boolean.valueOf(old ? oldJws2 : enableJws2Services.isSelected()).toString());
104 Cache.setProperty("WSMENU_BYHOST", Boolean.valueOf(old ? oldIndexByHost : indexByHost.isSelected()).toString());
105 Cache.setProperty("WSMENU_BYTYPE", Boolean.valueOf(old ? oldIndexByType : indexByType.isSelected()).toString());
110 * @see jalview.jbgui.GWsPreferences#moveWsUrlDown_actionPerformed(java.awt.event.ActionEvent)
113 protected void moveWsUrlDown_actionPerformed(ActionEvent e)
115 int p=wsList.getSelectedIndex();
116 if (p>-1 && p<wsUrls.size()-1)
118 String t = wsUrls.get(p+1);
119 wsUrls.setElementAt(wsUrls.elementAt(p), p+1);
120 wsUrls.setElementAt(t, p);
122 wsList.setSelectedIndex(p+1);
127 * @see jalview.jbgui.GWsPreferences#moveWsUrlUp_actionPerformed(java.awt.event.ActionEvent)
130 protected void moveWsUrlUp_actionPerformed(ActionEvent e)
132 int p=wsList.getSelectedIndex();
135 String t = wsUrls.get(p-1);
136 wsUrls.setElementAt(wsUrls.elementAt(p), p-1);
137 wsUrls.setElementAt(t, p);
139 wsList.setSelectedIndex(p-1);
143 private String editUrl(String initUrl, String title)
151 JTextField urltf = new JTextField(url, 40);
152 JPanel panel = new JPanel(new BorderLayout());
153 JPanel pane12 = new JPanel(new BorderLayout());
154 pane12.add(new JLabel("URL: "), BorderLayout.CENTER);
155 pane12.add(urltf, BorderLayout.EAST);
156 panel.add(pane12, BorderLayout.NORTH);
158 int resp=JOptionPane.CANCEL_OPTION;
159 while (!valid && (resp=JOptionPane.showInternalConfirmDialog(Desktop.desktop, panel, title, JOptionPane.OK_CANCEL_OPTION))==JOptionPane.OK_OPTION)
162 // TODO: do a better job of checking that the url is a valid discovery URL for web services.
163 foo = new URL(urltf.getText().trim());
165 } catch (Exception e)
168 JOptionPane.showInternalMessageDialog(Desktop.desktop, "Invalid URL !");
171 if (valid && resp==JOptionPane.OK_OPTION)
173 int validate = JOptionPane.showInternalConfirmDialog(Desktop.desktop, null, "Validate JabaWS Server ?\n(Look in console output for results)", JOptionPane.YES_NO_OPTION);
174 if (validate == JOptionPane.OK_OPTION)
176 if (jalview.ws.jws2.Jws2Discoverer.testServiceUrl(foo))
178 return foo.toString();
185 * @see jalview.jbgui.GWsPreferences#newWsUrl_actionPerformed(java.awt.event.ActionEvent)
188 protected void newWsUrl_actionPerformed(ActionEvent e)
190 String url=editUrl(null,"Add new JWS2 URL");
193 if (!wsUrls.contains(url))
195 int selind = wsList.getSelectedIndex();
198 wsUrls.insertElementAt(url, selind);
200 wsUrls.addElement(url);
208 * @see jalview.jbgui.GWsPreferences#refreshWs_actionPerformed(java.awt.event.ActionEvent)
211 protected void refreshWs_actionPerformed(ActionEvent e)
213 new Thread(new Runnable() {
217 updateWsMenuConfig(false);
224 protected void refreshWsMenu(boolean showProgress)
228 new Thread(new Runnable() {
232 progressBar.setVisible(true);
234 progressBar.setIndeterminate(true);
235 Desktop.instance.startServiceDiscovery(true); // wait around for all threads to complete
236 progressBar.setIndeterminate(false);
237 progressBar.setVisible(false);
243 new Thread(new Runnable() {
247 Desktop.instance.startServiceDiscovery(false);
255 * @see jalview.jbgui.GWsPreferences#resetWs_actionPerformed(java.awt.event.ActionEvent)
258 protected void resetWs_actionPerformed(ActionEvent e)
260 jalview.ws.jws2.Jws2Discoverer.setServiceUrls(null);
261 wsUrls = jalview.ws.jws2.Jws2Discoverer.getServiceUrls();
264 protected void ok_ActionPerformed(ActionEvent e) {
265 updateWsMenuConfig(false);
266 // todo: work out if the ws list needs updating ?
268 refreshWsMenu(false);