+\r
+ /**\r
+ * return an ordered list of database sources suitable for using in a GUI\r
+ * element\r
+ */\r
+ public String[] getOrderedSupportedSources()\r
+ {\r
+ String[] srcs = this.getSupportedDb();\r
+ ArrayList dassrc = new ArrayList(), nondas = new ArrayList();\r
+ for (int i = 0; i < srcs.length; i++)\r
+ {\r
+ String nm = getSourceProxy(srcs[i]).getDbName();\r
+ if (getSourceProxy(srcs[i]) instanceof jalview.ws.dbsources.DasSequenceSource)\r
+ {\r
+ if (nm.startsWith("das:"))\r
+ {\r
+ nm = nm.substring(4);\r
+ }\r
+ dassrc.add(new String[]\r
+ { srcs[i], nm.toUpperCase() });\r
+ }\r
+ else\r
+ {\r
+ nondas.add(new String[]\r
+ { srcs[i], nm.toUpperCase() });\r
+ }\r
+ }\r
+ Object[] sorted = nondas.toArray();\r
+ String[] tosort = new String[sorted.length];\r
+ nondas.clear();\r
+ for (int j = 0; j < sorted.length; j++)\r
+ {\r
+ tosort[j] = ((String[]) sorted[j])[1];\r
+ }\r
+ jalview.util.QuickSort.sort(tosort, sorted);\r
+ int i = 0;\r
+ for (int j = sorted.length - 1; j >= 0; j--, i++)\r
+ {\r
+ srcs[i] = ((String[]) sorted[j])[0];\r
+ sorted[j] = null;\r
+ }\r
+\r
+ sorted = dassrc.toArray();\r
+ tosort = new String[sorted.length];\r
+ dassrc.clear();\r
+ for (int j = 0; j < sorted.length; j++)\r
+ {\r
+ tosort[j] = ((String[]) sorted[j])[1];\r
+ }\r
+ jalview.util.QuickSort.sort(tosort, sorted);\r
+ for (int j = sorted.length - 1; j >= 0; j--, i++)\r
+ {\r
+ srcs[i] = ((String[]) sorted[j])[0];\r
+ sorted[j] = null;\r
+ }\r
+ return srcs;\r
+ }\r
+\r