/*\r
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.4)\r
- * Copyright (C) 2008 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.5)\r
+ * Copyright (C) 2010 J Procter, AM Waterhouse, 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
- * as published by the Free Software Foundation; either version 2\r
- * of the License, or (at your option) any later version.\r
+ * This file is part of Jalview.\r
* \r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * GNU General Public License for more details.\r
+ * Jalview is free software: you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License \r
+ * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\r
* \r
- * You should have received a copy of the GNU General Public License\r
- * along with this program; if not, write to the Free Software\r
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA\r
+ * Jalview is distributed in the hope that it will be useful, but \r
+ * WITHOUT ANY WARRANTY; without even the implied warranty \r
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR \r
+ * PURPOSE. See the GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License along with Jalview. If not, see <http://www.gnu.org/licenses/>.\r
*/\r
package jalview.gui;\r
\r
\r
if (registry.indexOf("/registry/das1/sources/") > -1)\r
{\r
- jalview.bin.Cache.setProperty("DAS_REGISTRY_URL", DEFAULT_REGISTRY);\r
+ jalview.bin.Cache.setProperty(jalview.bin.Cache.DAS_REGISTRY_URL,\r
+ DEFAULT_REGISTRY);\r
registry = DEFAULT_REGISTRY;\r
}\r
return registry;\r
\r
public Vector getSelectedSources()\r
{\r
+ // wait around if we're still loading.\r
+ while (dasSources == null)\r
+ {\r
+ if (!loadingDasSources)\r
+ {\r
+ new Thread(this).start();\r
+ try\r
+ {\r
+ Thread.sleep(5);\r
+ } catch (Exception e)\r
+ {\r
+ }\r
+ ;\r
+ while (loadingDasSources)\r
+ {\r
+ try\r
+ {\r
+ Thread.sleep(5);\r
+ } catch (Exception e)\r
+ {\r
+ }\r
+ ;\r
+ }\r
+ ;\r
+ }\r
+ }\r
+\r
Vector selected = new Vector();\r
for (int r = 0; r < selectedSources.size(); r++)\r
{\r
public void amendLocal(boolean newSource)\r
{\r
String url = "http://localhost:8080/", nickname = "";\r
-\r
+ boolean seqsrc = false;\r
if (!newSource)\r
{\r
int selectedRow = table.getSelectionModel().getMinSelectionIndex();\r
nickname = table.getValueAt(selectedRow, 0).toString();\r
url = ((DasSource) localSources.get(nickname)).getUrl();\r
+ seqsrc = ((DasSource) localSources.get(nickname))\r
+ .hasCapability("sequence");\r
}\r
\r
JTextField nametf = new JTextField(nickname, 40);\r
JTextField urltf = new JTextField(url, 40);\r
-\r
+ JCheckBox seqs = new JCheckBox("Sequence Source");\r
+ seqs.setSelected(seqsrc);\r
JPanel panel = new JPanel(new BorderLayout());\r
JPanel pane12 = new JPanel(new BorderLayout());\r
pane12.add(new JLabel("Nickname: "), BorderLayout.CENTER);\r
pane12.add(nametf, BorderLayout.EAST);\r
panel.add(pane12, BorderLayout.NORTH);\r
pane12 = new JPanel(new BorderLayout());\r
- pane12.add(new JLabel("URL: "), BorderLayout.CENTER);\r
+ pane12.add(new JLabel("URL: "), BorderLayout.NORTH);\r
+ pane12.add(seqs, BorderLayout.SOUTH);\r
pane12.add(urltf, BorderLayout.EAST);\r
panel.add(pane12, BorderLayout.SOUTH);\r
\r
\r
local.setUrl(urltf.getText());\r
local.setNickname(nametf.getText());\r
-\r
+ if (seqs.isSelected())\r
+ {\r
+ local.setCapabilities(new String[]\r
+ { "features", "sequence" });\r
+ }\r
if (localSources == null)\r
{\r
localSources = new Hashtable();\r
{\r
return;\r
}\r
-\r
+ // note - we add all das sources to list so they can be filtered for the\r
+ // standard fetchDbRefs function\r
int size = dasSources != null ? dasSources.length : 0;\r
int lsize = localSources.size();\r
\r
selectedSources.addElement(st.nextToken());\r
}\r
\r
- String local = jalview.bin.Cache.getProperty("DAS_LOCAL_SOURCE");\r
- if (local != null)\r
+ Vector _localSources = jalview.bin.Cache.getLocalDasSources();\r
+ if (_localSources != null)\r
{\r
if (localSources == null)\r
{\r
localSources = new Hashtable();\r
}\r
-\r
- st = new StringTokenizer(local, "\t");\r
- while (st.hasMoreTokens())\r
+ Enumeration sources = _localSources.elements();\r
+ while (sources.hasMoreElements())\r
{\r
- String token = st.nextToken();\r
- int bar = token.indexOf("|");\r
- Das1Source source = new Das1Source();\r
-\r
- source.setUrl(token.substring(bar + 1));\r
- source.setNickname(token.substring(0, bar));\r
-\r
+ Das1Source source = (Das1Source) sources.nextElement();\r
localSources.put(source.getNickname(), source);\r
}\r
}\r
registryURL.setText(DEFAULT_REGISTRY);\r
}\r
\r
+ /**\r
+ * set the DAS source settings in the given jalview properties.\r
+ * \r
+ * @param properties\r
+ */\r
public void saveProperties(Properties properties)\r
{\r
if (registryURL.getText() == null || registryURL.getText().length() < 1)\r
{\r
- properties.remove("DAS_REGISTRY_URL");\r
+ properties.remove(jalview.bin.Cache.DAS_REGISTRY_URL);\r
}\r
else\r
{\r
- properties.setProperty("DAS_REGISTRY_URL", registryURL.getText());\r
+ properties.setProperty(jalview.bin.Cache.DAS_REGISTRY_URL,\r
+ registryURL.getText());\r
}\r
\r
StringBuffer sb = new StringBuffer();\r
}\r
}\r
\r
- properties.setProperty("DAS_ACTIVE_SOURCE", sb.toString());\r
+ properties.setProperty(jalview.bin.Cache.DAS_ACTIVE_SOURCE, sb\r
+ .toString());\r
\r
if (localSources != null)\r
{\r
while (en.hasMoreElements())\r
{\r
String token = en.nextElement().toString();\r
- sb.append(token + "|"\r
+ sb.append(token\r
+ + "|"\r
+ + (((DasSource) localSources.get(token))\r
+ .hasCapability("sequence") ? "sequence:" : "")\r
+ ((DasSource) localSources.get(token)).getUrl() + "\t");\r
}\r
\r
- properties.setProperty("DAS_LOCAL_SOURCE", sb.toString());\r
+ properties.setProperty(jalview.bin.Cache.DAS_LOCAL_SOURCE, sb\r
+ .toString());\r
}\r
\r
}\r
}\r
}\r
}\r
+\r
+ public void initDasSources()\r
+ {\r
+\r
+ Thread thr = new Thread(new Runnable()\r
+ {\r
+ public void run()\r
+ {\r
+ // this actually initialises the das source list\r
+ paintComponent(null); // yuk\r
+ }\r
+ });\r
+ thr.start();\r
+ while (loadingDasSources || dasSources == null)\r
+ {\r
+ try\r
+ {\r
+ Thread.sleep(10);\r
+ } catch (Exception e)\r
+ {\r
+ }\r
+ ;\r
+ }\r
+ }\r
+\r
+ public Vector resolveSourceNicknames(Vector sources)\r
+ {\r
+\r
+ Vector resolved = new Vector();\r
+ if (sources != null)\r
+ {\r
+ for (int i = 0; i < dasSources.length; i++)\r
+ {\r
+ if (sources.contains(dasSources[i].getNickname()))\r
+ {\r
+ if (!resolved.contains(dasSources[i]))\r
+ {\r
+ resolved.addElement(dasSources[i]);\r
+ }\r
+ }\r
+ }\r
+ }\r
+ return resolved;\r
+ }\r
}\r