X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FWsPreferences.java;h=d92cddb22817eb3b07b4f2caf7236ff2bf92cf9e;hb=ab43013b7e357b84b4abade0dba949668dfb2a0e;hp=bc813ea4291b133a370bdf700d2d13fd89d74839;hpb=06931e7445db77675739e0f206d7b5fafc3f9c05;p=jalview.git diff --git a/src/jalview/gui/WsPreferences.java b/src/jalview/gui/WsPreferences.java index bc813ea..d92cddb 100644 --- a/src/jalview/gui/WsPreferences.java +++ b/src/jalview/gui/WsPreferences.java @@ -1,37 +1,48 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6) - * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2b1) + * Copyright (C) 2014 The Jalview Authors * * This file is part of Jalview. * * Jalview is free software: you can redistribute it and/or * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * * Jalview is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License along with Jalview. If not, see . + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. */ package jalview.gui; +import jalview.bin.Cache; +import jalview.jbgui.GWsPreferences; +import jalview.util.MessageManager; +import jalview.ws.jws2.Jws2Discoverer; +import jalview.ws.rest.RestServiceDescription; + import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.net.URL; +import java.util.List; import java.util.Vector; -import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; +import javax.swing.JTable; import javax.swing.JTextField; - -import jalview.bin.Cache; -import jalview.jbgui.GWsPreferences; -import jalview.ws.rest.RestServiceDescription; +import javax.swing.table.AbstractTableModel; +import javax.swing.table.TableCellRenderer; public class WsPreferences extends GWsPreferences { @@ -42,7 +53,9 @@ public class WsPreferences extends GWsPreferences initFromPreferences(); } - Vector wsUrls, oldUrls,rsbsUrls,oldRsbsUrls; + List wsUrls; + + Vector oldUrls, rsbsUrls, oldRsbsUrls; private boolean needWsMenuUpdate; @@ -52,8 +65,8 @@ public class WsPreferences extends GWsPreferences private void initFromPreferences() { - wsUrls = jalview.ws.jws2.Jws2Discoverer.getServiceUrls(); - if (wsUrls != null) + wsUrls = Jws2Discoverer.getDiscoverer().getServiceUrls(); + if (!wsUrls.isEmpty()) { oldUrls = new Vector(wsUrls); } @@ -62,6 +75,8 @@ public class WsPreferences extends GWsPreferences oldUrls = null; wsUrls = new Vector(); } + wsList.setDefaultRenderer(Integer.class, new JabaWSStatusRenderer()); + wsList.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS); updateList(); rsbsUrls = jalview.ws.rest.RestClient.getRsbsDescriptions(); if (rsbsUrls != null) @@ -103,7 +118,117 @@ public class WsPreferences extends GWsPreferences private void updateList() { - wsList.setListData(wsUrls); + Object tdat[][] = new Object[wsUrls.size()][2]; + int r = 0; + for (String url : wsUrls) + { + int status = Jws2Discoverer.getDiscoverer().getServerStatusFor(url); + tdat[r][1] = new Integer(status); + tdat[r++][0] = url; + } + + wsList.setModel(new WsUrlTableModel(tdat)); + wsList.getColumn(MessageManager.getString("label.status")).setMinWidth(10); + } + + private class JabaWSStatusRenderer extends JPanel implements + TableCellRenderer + { + public JabaWSStatusRenderer() + { + setOpaque(true); + setMinimumSize(new Dimension(10, 10)); + // setText(" "); + + } + + /** + * render an Integer reflecting service status as a colour and symbol + */ + + @Override + public Component getTableCellRendererComponent(JTable arg0, + Object status, boolean isSelected, boolean hasFocus, int row, + int column) + { + Color c; + String t = new String(""); + switch (((Integer) status).intValue()) + { + case 1: + // cb.setSelected(true); + // cb.setBackground( + c = Color.green; + break; + case 0: + // cb.setSelected(true); + // cb.setBackground( + c = Color.lightGray; + break; + case -1: + // cb.setSelected(false); + // cb.setBackground( + c = Color.red; + break; + default: + // cb.setSelected(false); + // cb.setBackground( + c = Color.orange; + } + setBackground(c); + // setText(t); + return this; + + } + + } + + private class WsUrlTableModel extends AbstractTableModel + { + + private Object[][] data; + private String[] columnNames = new String[] + { MessageManager.getString("label.service_url"), MessageManager.getString("label.status") }; + + public WsUrlTableModel(Object[][] tdat) + { + this.data = tdat; + } + + @Override + public int getColumnCount() + { + return 2; + } + + @Override + public String getColumnName(int column) + { + return columnNames[column]; + } + + @Override + public int getRowCount() + { + if (data == null) + { + return 0; + } + return data.length; + } + + @Override + public java.lang.Class getColumnClass(int columnIndex) + { + return getValueAt(0, columnIndex).getClass(); + }; + + @Override + public Object getValueAt(int rowIndex, int columnIndex) + { + return data[rowIndex][columnIndex]; + } + } private void updateRsbsList() @@ -113,7 +238,7 @@ public class WsPreferences extends GWsPreferences private void updateServiceList() { - jalview.ws.jws2.Jws2Discoverer.setServiceUrls(wsUrls); + Jws2Discoverer.getDiscoverer().setServiceUrls(wsUrls); } private void updateRsbsServiceList() @@ -131,10 +256,10 @@ public class WsPreferences extends GWsPreferences @Override protected void deleteWsUrl_actionPerformed(ActionEvent e) { - int sel = wsList.getSelectedIndex(); + int sel = wsList.getSelectedRow(); if (sel > -1) { - wsUrls.removeElementAt(sel); + wsUrls.remove(sel); update++; updateList(); } @@ -149,61 +274,69 @@ public class WsPreferences extends GWsPreferences @Override protected void editWsUrl_actionPerformed(ActionEvent e) { - int sel = wsList.getSelectedIndex(); + int sel = wsList.getSelectedRow(); if (sel > -1) { - String url = editUrl(wsUrls.elementAt(sel), "Edit JABAWS URL"); + String url = editUrl(wsUrls.get(sel), + MessageManager.getString("label.edit_jabaws_url")); if (url != null) { int present = wsUrls.indexOf(url); if (present == -1) { update++; - wsUrls.setElementAt(url, sel); + wsUrls.set(sel, url); updateList(); } else { if (present != sel) { - wsUrls.removeElementAt(sel); + wsUrls.remove(sel); updateList(); } } } } } + @Override protected void newSbrsUrl_actionPerformed(ActionEvent e) { RestServiceEditorPane rse = new RestServiceEditorPane(); - rse.showDialog("Add a new Simple Bioinformatics Rest Service"); + rse.showDialog(MessageManager.getString("label.add_new_sbrs_service")); String rservice = rse.getEditedRestService(); - if (rservice!=null && !rsbsUrls.contains(rservice)) + if (rservice != null && !rsbsUrls.contains(rservice)) { rsbsUrls.add(rservice); update++; updateRsbsList(); } } + @Override protected void editSbrsUrl_actionPerformed(ActionEvent e) { int sel = sbrsList.getSelectedIndex(); if (sel > -1) { - RestServiceEditorPane rse = new RestServiceEditorPane(new RestServiceDescription(rsbsUrls.elementAt(sel))); - rse.showDialog("Edit Simple Bioinformatics Rest Service entry"); + RestServiceEditorPane rse = new RestServiceEditorPane( + new RestServiceDescription(rsbsUrls.elementAt(sel))); + rse.showDialog(MessageManager.getString("label.edit_sbrs_entry")); String rservice = rse.getEditedRestService(); - if (rservice!=null) + if (rservice != null) { int present = rsbsUrls.indexOf(rservice); - if (present==-1) { + if (present == -1) + { update++; - rsbsUrls.setElementAt(rservice,sel); + rsbsUrls.setElementAt(rservice, sel); updateRsbsList(); - } else { - if (present!=sel) { + } + else + { + if (present != sel) + { rsbsUrls.removeElementAt(sel); update++; updateRsbsList(); @@ -212,17 +345,21 @@ public class WsPreferences extends GWsPreferences } } } - + void updateWsMenuConfig(boolean old) { if (old) { - if (oldUrls!=wsUrls || (wsUrls!=null && oldUrls!=null && !wsUrls.equals(oldUrls))) + if (oldUrls != wsUrls + || (wsUrls != null && oldUrls != null && !wsUrls + .equals(oldUrls))) { update++; } wsUrls = (oldUrls == null) ? null : new Vector(oldUrls); - if (oldRsbsUrls!=rsbsUrls || (rsbsUrls!=null && oldRsbsUrls!=null && !oldRsbsUrls.equals(rsbsUrls))) + if (oldRsbsUrls != rsbsUrls + || (rsbsUrls != null && oldRsbsUrls != null && !oldRsbsUrls + .equals(rsbsUrls))) { update++; } @@ -249,9 +386,12 @@ public class WsPreferences extends GWsPreferences "WSMENU_BYTYPE", Boolean.valueOf(old ? oldIndexByType : indexByType.isSelected()) .toString()); - - Cache.setProperty("SHOW_WSDISCOVERY_ERRORS", - Boolean.valueOf(old ? oldWsWarning : displayWsWarning.isSelected()).toString()); + + Cache.setProperty( + "SHOW_WSDISCOVERY_ERRORS", + Boolean.valueOf( + old ? oldWsWarning : displayWsWarning.isSelected()) + .toString()); updateServiceList(); updateRsbsServiceList(); } @@ -266,14 +406,14 @@ public class WsPreferences extends GWsPreferences @Override protected void moveWsUrlDown_actionPerformed(ActionEvent e) { - int p = wsList.getSelectedIndex(); + int p = wsList.getSelectedRow(); if (p > -1 && p < wsUrls.size() - 1) { String t = wsUrls.get(p + 1); - wsUrls.setElementAt(wsUrls.elementAt(p), p + 1); - wsUrls.setElementAt(t, p); + wsUrls.set(p + 1, wsUrls.get(p)); + wsUrls.set(p, t); updateList(); - wsList.setSelectedIndex(p + 1); + wsList.getSelectionModel().setSelectionInterval(p + 1, p + 1); update++; } } @@ -288,14 +428,14 @@ public class WsPreferences extends GWsPreferences @Override protected void moveWsUrlUp_actionPerformed(ActionEvent e) { - int p = wsList.getSelectedIndex(); + int p = wsList.getSelectedRow(); if (p > 0) { String t = wsUrls.get(p - 1); - wsUrls.setElementAt(wsUrls.elementAt(p), p - 1); - wsUrls.setElementAt(t, p); + wsUrls.set(p - 1, wsUrls.get(p)); + wsUrls.set(p, t); updateList(); - wsList.setSelectedIndex(p - 1); + wsList.getSelectionModel().setSelectionInterval(p - 1, p - 1); update++; } } @@ -311,7 +451,8 @@ public class WsPreferences extends GWsPreferences JTextField urltf = new JTextField(url, 40); JPanel panel = new JPanel(new BorderLayout()); JPanel pane12 = new JPanel(new BorderLayout()); - pane12.add(new JLabel("URL: "), BorderLayout.CENTER); + pane12.add(new JLabel(MessageManager.getString("label.url")), + BorderLayout.CENTER); pane12.add(urltf, BorderLayout.EAST); panel.add(pane12, BorderLayout.NORTH); boolean valid = false; @@ -326,9 +467,9 @@ public class WsPreferences extends GWsPreferences // TODO: do a better job of checking that the url is a valid discovery // URL for web services. String tx = urltf.getText().trim(); - while (tx.length()>0 && tx.lastIndexOf('/')==tx.length()-1) + while (tx.length() > 0 && tx.lastIndexOf('/') == tx.length() - 1) { - tx = tx.substring(0, tx.length()-1); + tx = tx.substring(0, tx.length() - 1); } foo = new URL(tx); valid = true; @@ -337,7 +478,7 @@ public class WsPreferences extends GWsPreferences { valid = false; JOptionPane.showInternalMessageDialog(Desktop.desktop, - "Invalid URL !"); + MessageManager.getString("label.invalid_url")); } } if (valid && resp == JOptionPane.OK_OPTION) @@ -345,20 +486,40 @@ public class WsPreferences extends GWsPreferences int validate = JOptionPane .showInternalConfirmDialog( Desktop.desktop, - "Validate JabaWS Server ?\n(Look in console output for results)", - "Test Server?", JOptionPane.YES_NO_OPTION); + MessageManager.getString("info.validate_jabaws_server"), + MessageManager.getString("label.test_server"), JOptionPane.YES_NO_OPTION); + if (validate == JOptionPane.OK_OPTION) { - if (jalview.ws.jws2.Jws2Discoverer.testServiceUrl(foo)) + if (Jws2Discoverer.testServiceUrl(foo)) { return foo.toString(); } else { - JOptionPane - .showInternalMessageDialog( + int opt = JOptionPane + .showInternalOptionDialog( Desktop.desktop, - "Service did not pass validation.\nCheck the Jalview Console for more details."); + "The Server '" + + foo.toString() + + "' failed validation,\ndo you want to add it anyway? ", + "Server Validation Failed", + JOptionPane.YES_NO_OPTION, + JOptionPane.INFORMATION_MESSAGE, null, null, null); + if (opt == JOptionPane.YES_OPTION) + { + return foo.toString(); + } + else + { + JOptionPane + .showInternalMessageDialog( + Desktop.desktop, + MessageManager + .getString("warn.server_didnt_pass_validation")); + } + + } } else @@ -379,19 +540,19 @@ public class WsPreferences extends GWsPreferences @Override protected void newWsUrl_actionPerformed(ActionEvent e) { - String url = editUrl(null, "Add new JABAWS URL"); + String url = editUrl(null, MessageManager.getString("label.add_jabaws_url")); if (url != null) { if (!wsUrls.contains(url)) { - int selind = wsList.getSelectedIndex(); + int selind = wsList.getSelectedRow(); if (selind > -1) { - wsUrls.insertElementAt(url, selind); + wsUrls.add(selind, url); } else { - wsUrls.addElement(url); + wsUrls.add(url); } update++; updateList(); @@ -446,6 +607,8 @@ public class WsPreferences extends GWsPreferences lastrefresh = update; Desktop.instance.startServiceDiscovery(true); // wait around for all // threads to complete + updateList(); + } progressBar.setIndeterminate(false); progressBar.setVisible(false); @@ -462,12 +625,13 @@ public class WsPreferences extends GWsPreferences public void run() { long ct = System.currentTimeMillis(); - Desktop.instance.setProgressBar("Refreshing Web Service Menus", + Desktop.instance.setProgressBar(MessageManager.getString("status.refreshing_web_service_menus"), ct); if (lastrefresh != update) { lastrefresh = update; Desktop.instance.startServiceDiscovery(true); + updateList(); } Desktop.instance.setProgressBar(null, ct); } @@ -491,14 +655,15 @@ public class WsPreferences extends GWsPreferences @Override protected void resetWs_actionPerformed(ActionEvent e) { - jalview.ws.jws2.Jws2Discoverer.setServiceUrls(null); - Vector nwsUrls = jalview.ws.jws2.Jws2Discoverer.getServiceUrls(); - if (!wsUrls.equals(nwsUrls)) { + Jws2Discoverer.getDiscoverer().setServiceUrls(null); + List nwsUrls = Jws2Discoverer.getDiscoverer().getServiceUrls(); + if (!wsUrls.equals(nwsUrls)) + { update++; } - wsUrls=nwsUrls; + wsUrls = nwsUrls; updateList(); - + updateAndRefreshWsMenuConfig(true); }