/*\r
* Jalview - A Sequence Alignment Editor and Viewer\r
- * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
+ * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
*\r
* This program is free software; you can redistribute it and/or\r
* modify it under the terms of the GNU General Public License\r
\r
Vector selectedSources;\r
\r
+ String DEFAULT_REGISTRY = "http://das.sanger.ac.uk/registry/das1/sources/";\r
+\r
+ boolean loadingDasSources = false;\r
+\r
+\r
public DasSourceBrowser()\r
{\r
registryURL.setText(jalview.bin.Cache.getDefault("DAS_REGISTRY_URL",\r
- "http://www.spice-3d.org/dasregistry/das1/sources") );\r
+ DEFAULT_REGISTRY) );\r
\r
setSelectedFromProperties();\r
\r
{\r
public void valueChanged(ListSelectionEvent e)\r
{\r
- //Ignore extra messages.\r
- if (e.getValueIsAdjusting())\r
- return;\r
-\r
ListSelectionModel lsm = (ListSelectionModel) e.getSource();\r
if (!lsm.isSelectionEmpty())\r
{\r
}\r
});\r
\r
- if(dasSources==null)\r
+ if(dasSources!=null)\r
{\r
- Thread worker = new Thread(this);\r
- worker.start();\r
- }\r
- else\r
- {\r
init();\r
- }\r
+ }\r
+ }\r
+\r
+ public void paintComponent(java.awt.Graphics g)\r
+ {\r
+ if (dasSources == null && !loadingDasSources)\r
+ {\r
+ Thread worker = new Thread(this);\r
+ worker.start();\r
+ }\r
}\r
\r
void init()\r
\r
public void run()\r
{\r
+ loadingDasSources = true;\r
+\r
addLocal.setVisible(false);\r
refresh.setVisible(false);\r
progressBar.setVisible(true);\r
appendLocalSources();\r
\r
init();\r
+\r
+ loadingDasSources = false;\r
+\r
+ }\r
+\r
+ public Vector getSelectedSources()\r
+ {\r
+ Vector selected = new Vector();\r
+ for (int r = 0; r < selectedSources.size(); r++)\r
+ {\r
+ for (int i = 0; i < dasSources.length; i++)\r
+ {\r
+ if (dasSources[i].getNickname().equals(\r
+ selectedSources.elementAt(r)))\r
+ {\r
+ selected.addElement(dasSources[i]);\r
+ break;\r
+ }\r
+ }\r
+ }\r
+\r
+ return selected;\r
}\r
\r
public DasSource[] getDASSource()\r
authority.addElement("Any");\r
type.addElement("Any");\r
label.addElement("Any");\r
- label.addElement("NOT IMPLEMENTED YET");\r
- filter3.setEnabled(false);\r
\r
for (int i = 0; i < sources.length; i++)\r
{\r
index++;\r
}\r
\r
- dasSources = tmp;\r
+ dasSources = tmp;\r
\r
- refreshTableData(data);\r
+ refreshTableData(data);\r
}\r
\r
public void valueChanged(ListSelectionEvent evt)\r
{\r
//Called when the MainTable selection changes\r
- if (evt.getValueIsAdjusting())\r
+ if (evt.getValueIsAdjusting() )\r
{\r
return;\r
}\r
\r
+\r
displayFullDetails(null);\r
\r
// Filter the displayed data sources\r
int dSize = dasSources.length;\r
+\r
+\r
ArrayList names = new ArrayList();\r
ArrayList selected = new ArrayList();\r
DasSource ds;\r
\r
- // capabilities.get\r
+ //The features filter is not visible, but we must still\r
+ //filter the das source list here.\r
+ //July 2006 - only 6 sources fo not serve features\r
+ Object [] dummyFeatureList = new Object[]{"features"};\r
+\r
for (int i = 0; i < dSize; i++)\r
{\r
ds = dasSources[i];\r
+ DasCoordinateSystem[] dcs = ds.getCoordinateSystem();\r
\r
- if (!selectedInList(filter3, ds.getLabels()))\r
+ if (dcs.length == 0 && ds.getCapabilities().length == 0\r
+ && filter1.getSelectedIndex() == 0\r
+ && filter2.getSelectedIndex() == 0\r
+ && filter3.getSelectedIndex() == 0)\r
+ {\r
+ //THIS IS A FIX FOR LOCAL SOURCES WHICH DO NOT\r
+ //HAVE COORDINATE SYSTEMS, INFO WHICH AT PRESENT\r
+ //IS ADDED FROM THE REGISTRY\r
+ names.add(ds.getNickname());\r
+ selected.add(new Boolean(\r
+ selectedSources.contains(ds.getNickname())));\r
+ continue;\r
+ }\r
+\r
+\r
+ if (!selectedInList(dummyFeatureList, ds.getCapabilities())\r
+ || !selectedInList(filter3.getSelectedValues(),\r
+ ds.getLabels()))\r
{\r
continue;\r
}\r
\r
- DasCoordinateSystem[] dcs = ds.getCoordinateSystem();\r
for (int j = 0; j < dcs.length; j++)\r
{\r
- if (selectedInList(filter1, new String[]\r
+ if ( selectedInList(filter1.getSelectedValues(),\r
+ new String[]\r
{dcs[j].getName()})\r
- && selectedInList(filter2, new String[]\r
+ && selectedInList(filter2.getSelectedValues(),\r
+ new String[]\r
{dcs[j].getCategory()}))\r
{\r
names.add(ds.getNickname());\r
refreshTableData(data);\r
}\r
\r
- boolean selectedInList(JList list, String[] items)\r
+ boolean selectedInList(Object [] selection, String[] items)\r
{\r
- Object[] selection = list.getSelectedValues();\r
for (int i = 0; i < selection.length; i++)\r
{\r
- if (selection[i].equals("Any"))\r
+ if (selection[i].equals("Any") )\r
return true;\r
\r
for (int j = 0; j < items.length; j++)\r
}\r
}\r
\r
- void saveProperties(Properties properties)\r
+ public void reset_actionPerformed(ActionEvent e)\r
{\r
- properties.setProperty("DAS_REGISTRY_URL", registryURL.getText());\r
+ registryURL.setText(DEFAULT_REGISTRY);\r
+ }\r
+\r
+ public void saveProperties(Properties properties)\r
+ {\r
+ if (registryURL.getText() == null || registryURL.getText().length() < 1)\r
+ properties.remove("DAS_REGISTRY_URL");\r
+ else\r
+ properties.setProperty("DAS_REGISTRY_URL", registryURL.getText());\r
\r
StringBuffer sb = new StringBuffer();\r
for(int r=0; r<table.getModel().getRowCount(); r++)\r