X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=inline;f=src%2Fjalview%2Fgui%2FWsPreferences.java;h=850ef21e7238013a12e20d45abee19c683137c20;hb=48eba1af1959565659fae9f9e7f4e28d9726c28c;hp=8a09df877ef5ca5a2750ca687a16c6e0a0fe3f5b;hpb=797df64fa2a0a30773d0f48f5494d4155e5a8be3;p=jalview.git
diff --git a/src/jalview/gui/WsPreferences.java b/src/jalview/gui/WsPreferences.java
index 8a09df8..850ef21 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.7)
- * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ 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)
@@ -74,20 +89,20 @@ public class WsPreferences extends GWsPreferences
rsbsUrls = new Vector();
}
updateRsbsList();
- enableEnfinServices.setSelected(oldEnfin = Cache.getDefault(
- "SHOW_ENFIN_SERVICES", true));
+ enableEnfinServices.setSelected(
+ oldEnfin = Cache.getDefault("SHOW_ENFIN_SERVICES", true));
enableEnfinServices.addActionListener(updateAction);
- enableJws2Services.setSelected(oldJws2 = Cache.getDefault(
- "SHOW_JWS2_SERVICES", true));
+ enableJws2Services.setSelected(
+ oldJws2 = Cache.getDefault("SHOW_JWS2_SERVICES", true));
enableJws2Services.addActionListener(updateAction);
- indexByHost.setSelected(oldIndexByHost = Cache.getDefault(
- "WSMENU_BYHOST", false));
+ indexByHost.setSelected(
+ oldIndexByHost = Cache.getDefault("WSMENU_BYHOST", false));
indexByHost.addActionListener(updateAction);
- indexByType.setSelected(oldIndexByType = Cache.getDefault(
- "WSMENU_BYTYPE", false));
+ indexByType.setSelected(
+ oldIndexByType = Cache.getDefault("WSMENU_BYTYPE", false));
indexByType.addActionListener(updateAction);
- displayWsWarning.setSelected(oldWsWarning = Cache.getDefault(
- "SHOW_WSDISCOVERY_ERRORS", true));
+ displayWsWarning.setSelected(oldWsWarning = Cache
+ .getDefault("SHOW_WSDISCOVERY_ERRORS", true));
}
ActionListener updateAction = new ActionListener()
@@ -103,7 +118,120 @@ 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 +241,7 @@ public class WsPreferences extends GWsPreferences
private void updateServiceList()
{
- jalview.ws.jws2.Jws2Discoverer.setServiceUrls(wsUrls);
+ Jws2Discoverer.getDiscoverer().setServiceUrls(wsUrls);
}
private void updateRsbsServiceList()
@@ -131,10 +259,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 +277,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 +348,19 @@ 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++;
}
@@ -232,26 +370,24 @@ public class WsPreferences extends GWsPreferences
{
}
- Cache.setProperty(
- "SHOW_ENFIN_SERVICES",
+ Cache.setProperty("SHOW_ENFIN_SERVICES",
Boolean.valueOf(
old ? oldEnfin : enableEnfinServices.isSelected())
.toString());
- Cache.setProperty(
- "SHOW_JWS2_SERVICES",
+ Cache.setProperty("SHOW_JWS2_SERVICES",
Boolean.valueOf(old ? oldJws2 : enableJws2Services.isSelected())
.toString());
- Cache.setProperty(
- "WSMENU_BYHOST",
+ Cache.setProperty("WSMENU_BYHOST",
Boolean.valueOf(old ? oldIndexByHost : indexByHost.isSelected())
.toString());
- Cache.setProperty(
- "WSMENU_BYTYPE",
+ Cache.setProperty("WSMENU_BYTYPE",
Boolean.valueOf(old ? oldIndexByType : indexByType.isSelected())
.toString());
-
+
Cache.setProperty("SHOW_WSDISCOVERY_ERRORS",
- Boolean.valueOf(old ? oldWsWarning : displayWsWarning.isSelected()).toString());
+ Boolean.valueOf(
+ old ? oldWsWarning : displayWsWarning.isSelected())
+ .toString());
updateServiceList();
updateRsbsServiceList();
}
@@ -266,14 +402,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 +424,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,24 +447,24 @@ 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;
- int resp = JOptionPane.CANCEL_OPTION;
- while (!valid
- && (resp = JOptionPane.showInternalConfirmDialog(
- Desktop.desktop, panel, title,
- JOptionPane.OK_CANCEL_OPTION)) == JOptionPane.OK_OPTION)
+ int resp = JvOptionPane.CANCEL_OPTION;
+ while (!valid && (resp = JvOptionPane.showInternalConfirmDialog(
+ Desktop.desktop, panel, title,
+ JvOptionPane.OK_CANCEL_OPTION)) == JvOptionPane.OK_OPTION)
{
try
{
// 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;
@@ -336,29 +472,41 @@ public class WsPreferences extends GWsPreferences
} catch (Exception e)
{
valid = false;
- JOptionPane.showInternalMessageDialog(Desktop.desktop,
- "Invalid URL !");
+ JvOptionPane.showInternalMessageDialog(Desktop.desktop,
+ MessageManager.getString("label.invalid_url"));
}
}
- if (valid && resp == JOptionPane.OK_OPTION)
+ if (valid && resp == JvOptionPane.OK_OPTION)
{
- int validate = JOptionPane
- .showInternalConfirmDialog(
- Desktop.desktop,
- "Validate JabaWS Server ?\n(Look in console output for results)",
- "Test Server?", JOptionPane.YES_NO_OPTION);
- if (validate == JOptionPane.OK_OPTION)
+ int validate = JvOptionPane.showInternalConfirmDialog(Desktop.desktop,
+ MessageManager.getString("info.validate_jabaws_server"),
+ MessageManager.getString("label.test_server"),
+ JvOptionPane.YES_NO_OPTION);
+
+ if (validate == JvOptionPane.OK_OPTION)
{
- if (jalview.ws.jws2.Jws2Discoverer.testServiceUrl(foo))
+ if (Jws2Discoverer.testServiceUrl(foo))
{
return foo.toString();
}
else
{
- JOptionPane
- .showInternalMessageDialog(
- Desktop.desktop,
- "Service did not pass validation.\nCheck the Jalview Console for more details.");
+ int opt = JvOptionPane.showInternalOptionDialog(Desktop.desktop,
+ "The Server '" + foo.toString()
+ + "' failed validation,\ndo you want to add it anyway? ",
+ "Server Validation Failed", JvOptionPane.YES_NO_OPTION,
+ JvOptionPane.INFORMATION_MESSAGE, null, null, null);
+ if (opt == JvOptionPane.YES_OPTION)
+ {
+ return foo.toString();
+ }
+ else
+ {
+ JvOptionPane.showInternalMessageDialog(Desktop.desktop,
+ MessageManager.getString(
+ "warn.server_didnt_pass_validation"));
+ }
+
}
}
else
@@ -379,19 +527,20 @@ 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();
@@ -411,6 +560,7 @@ public class WsPreferences extends GWsPreferences
new Thread(new Runnable()
{
+ @Override
public void run()
{
// force a refresh.
@@ -436,6 +586,7 @@ public class WsPreferences extends GWsPreferences
new Thread(new Runnable()
{
+ @Override
public void run()
{
progressBar.setVisible(true);
@@ -446,6 +597,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);
@@ -459,15 +612,17 @@ public class WsPreferences extends GWsPreferences
new Thread(new Runnable()
{
+ @Override
public void run()
{
long ct = System.currentTimeMillis();
- Desktop.instance.setProgressBar("Refreshing Web Service Menus",
- ct);
+ 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 +646,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);
}
@@ -514,6 +670,7 @@ public class WsPreferences extends GWsPreferences
new Thread(new Runnable()
{
+ @Override
public void run()
{
updateWsMenuConfig(false);