*/
package jalview.gui;
+import jalview.bin.Cache;
+import jalview.jbgui.GWsPreferences;
+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.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
{
+
public WsPreferences()
{
super();
initFromPreferences();
}
- Vector<String> wsUrls, oldUrls,rsbsUrls,oldRsbsUrls;
+ Vector<String> wsUrls, oldUrls, rsbsUrls, oldRsbsUrls;
private boolean needWsMenuUpdate;
oldUrls = null;
wsUrls = new Vector<String>();
}
+ wsList.setDefaultRenderer(Integer.class, new JabaWSStatusRenderer());
+ wsList.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
updateList();
rsbsUrls = jalview.ws.rest.RestClient.getRsbsDescriptions();
if (rsbsUrls != null)
};
- private void updateList()
+ private void updateList() {
+ 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("Status").setMinWidth(10);
+ }
+ private class JabaWSStatusRenderer extends JPanel implements TableCellRenderer
{
- wsList.setListData(wsUrls);
+ 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;
+ public WsUrlTableModel(Object[][] tdat)
+ {
+ this.data=tdat;
+ }
+ @Override
+ public int getColumnCount()
+ {
+ return 2;
+ }
+ @Override
+ public String getColumnName(int column)
+ {
+ if (column==1)
+ {
+ return "Status";
+ }
+ return "Service URL";
+ }
+ @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()
{
sbrsList.setListData(rsbsUrls);
@Override
protected void deleteWsUrl_actionPerformed(ActionEvent e)
{
- int sel = wsList.getSelectedIndex();
+ int sel = wsList.getSelectedRow();
if (sel > -1)
{
wsUrls.removeElementAt(sel);
@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");
}
}
}
+
@Override
protected void newSbrsUrl_actionPerformed(ActionEvent e)
{
RestServiceEditorPane rse = new RestServiceEditorPane();
rse.showDialog("Add a new Simple Bioinformatics Rest 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)));
+ RestServiceEditorPane rse = new RestServiceEditorPane(
+ new RestServiceDescription(rsbsUrls.elementAt(sel)));
rse.showDialog("Edit Simple Bioinformatics Rest Service 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();
}
}
}
-
+
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++;
}
"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();
}
@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);
updateList();
- wsList.setSelectedIndex(p + 1);
+ wsList.getSelectionModel().setSelectionInterval(p+1,p + 1);
update++;
}
}
@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);
updateList();
- wsList.setSelectedIndex(p - 1);
+ wsList.getSelectionModel().setSelectionInterval(p-1,p - 1);
update++;
}
}
// 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;
{
if (!wsUrls.contains(url))
{
- int selind = wsList.getSelectedIndex();
+ int selind = wsList.getSelectedRow();
if (selind > -1)
{
wsUrls.insertElementAt(url, selind);
lastrefresh = update;
Desktop.instance.startServiceDiscovery(true); // wait around for all
// threads to complete
+ updateList();
+
}
progressBar.setIndeterminate(false);
progressBar.setVisible(false);
{
lastrefresh = update;
Desktop.instance.startServiceDiscovery(true);
+ updateList();
}
Desktop.instance.setProgressBar(null, ct);
}
{
jalview.ws.jws2.Jws2Discoverer.setServiceUrls(null);
Vector nwsUrls = jalview.ws.jws2.Jws2Discoverer.getServiceUrls();
- if (!wsUrls.equals(nwsUrls)) {
+ if (!wsUrls.equals(nwsUrls))
+ {
update++;
}
- wsUrls=nwsUrls;
+ wsUrls = nwsUrls;
updateList();
-
+
updateAndRefreshWsMenuConfig(true);
}
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
+import javax.swing.JTable;
import javax.swing.ListSelectionModel;
-import javax.swing.SwingConstants;
import javax.swing.border.TitledBorder;
/**
protected JButton deleteSbrsUrl = new JButton();
- protected JList wsList = new JList();
-
+ // Web service status and url table
+ protected JTable wsList=new JTable();
+
protected TitledBorder wsListTitleBorder = new TitledBorder(
"Web Service Discovery URLS");
progressBar.setString("");
wsListUrlPanel.setBorder(BorderFactory.createEtchedBorder());
wsListUrlPanel.setLayout(new BorderLayout());
- // wsListUrlPanel.setPreferredSize(new Dimension(482,202));
wsListPane.setBorder(BorderFactory.createEtchedBorder());
wsListPane.getViewport().add(wsList);
- // wsListPane.setPreferredSize(new Dimension(380, 80));
+ wsList.setPreferredSize(new Dimension(482,202));
+ wsListPane.setPreferredSize(new Dimension(380, 80));
wsList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+ wsList.setColumnSelectionAllowed(false);
wsList.addMouseListener(new MouseListener()
{
}
});
- // wsListButtons.setPreferredSize(new Dimension(480, 60));
wsListButtons.setLayout(new FlowLayout());
- // wsListButtons.add(moveWsUrlUp);
- // wsListButtons.add(moveWsUrlDown);
wsListButtons.add(newWsUrl);
wsListButtons.add(editWsUrl);
wsListButtons.add(deleteWsUrl);
+ wsListButtons.setMinimumSize(new Dimension(350,80));
wsListNavButs.setSize(new Dimension(80, 80));
wsListNavButs.setPreferredSize(new Dimension(80, 80));
wsListNavButs.setLayout(new FlowLayout());
srbsListUrlPanel.setLayout(new BorderLayout());
srbsListPane.setBorder(BorderFactory.createEtchedBorder());
srbsListPane.getViewport().add(sbrsList);
- //srbsListPane.setMinimumSize(new Dimension(380, 80));
sbrsList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
sbrsList.addMouseListener(new MouseListener()
{