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_ENVISION2_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 return urltf.getText().trim();
178 * @see jalview.jbgui.GWsPreferences#newWsUrl_actionPerformed(java.awt.event.ActionEvent)
181 protected void newWsUrl_actionPerformed(ActionEvent e)
183 String url=editUrl(null,"Add new JWS2 URL");
186 if (!wsUrls.contains(url))
188 int selind = wsList.getSelectedIndex();
191 wsUrls.insertElementAt(url, selind);
193 wsUrls.addElement(url);
201 * @see jalview.jbgui.GWsPreferences#refreshWs_actionPerformed(java.awt.event.ActionEvent)
204 protected void refreshWs_actionPerformed(ActionEvent e)
206 new Thread(new Runnable() {
211 updateWsMenuConfig(false);
218 protected void refreshWsMenu(boolean showProgress)
222 new Thread(new Runnable() {
227 progressBar.setVisible(true);
229 progressBar.setIndeterminate(true);
230 Desktop.instance.startServiceDiscovery(true); // wait around for all threads to complete
231 progressBar.setIndeterminate(false);
232 progressBar.setVisible(false);
238 new Thread(new Runnable() {
243 Desktop.instance.startServiceDiscovery(false);
251 * @see jalview.jbgui.GWsPreferences#resetWs_actionPerformed(java.awt.event.ActionEvent)
254 protected void resetWs_actionPerformed(ActionEvent e)
256 jalview.ws.jws2.Jws2Discoverer.setServiceUrls(null);
257 wsUrls = jalview.ws.jws2.Jws2Discoverer.getServiceUrls();
260 protected void ok_ActionPerformed(ActionEvent e) {
261 updateWsMenuConfig(false);
262 // todo: work out if the ws list needs updating ?
264 refreshWsMenu(false);