X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FAnnotationFile.java;h=b669ee50903dff5d89c44c1d65a1224b71937310;hb=2d3be0b3f26fa3e35480976cd5a90a5562d43dcf;hp=f80adef27485e61b9892113559880af418130da1;hpb=320c96aed11f5c396a9efd9ea83b0e35f05e21e4;p=jalview.git diff --git a/src/jalview/io/AnnotationFile.java b/src/jalview/io/AnnotationFile.java index f80adef..b669ee5 100755 --- a/src/jalview/io/AnnotationFile.java +++ b/src/jalview/io/AnnotationFile.java @@ -27,12 +27,12 @@ import jalview.datamodel.AlignmentI; import jalview.datamodel.Annotation; import jalview.datamodel.ColumnSelection; import jalview.datamodel.GraphLine; +import jalview.datamodel.HiddenColumns; import jalview.datamodel.HiddenSequences; import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; import jalview.schemes.ColourSchemeI; import jalview.schemes.ColourSchemeProperty; -import jalview.schemes.UserColourScheme; import jalview.util.ColorUtils; import java.awt.Color; @@ -110,23 +110,22 @@ public class AnnotationFile */ public class ViewDef { - public String viewname; + // TODO this class is not used - remove? + public final String viewname; - public HiddenSequences hidseqs; + public final HiddenSequences hidseqs; - public ColumnSelection hiddencols; + public final HiddenColumns hiddencols; - public Vector visibleGroups; + public final Hashtable hiddenRepSeqs; - public Hashtable hiddenRepSeqs; - - public ViewDef(String viewname, HiddenSequences hidseqs, - ColumnSelection hiddencols, Hashtable hiddenRepSeqs) + public ViewDef(String vname, HiddenSequences hseqs, + HiddenColumns hcols, Hashtable hRepSeqs) { - this.viewname = viewname; - this.hidseqs = hidseqs; - this.hiddencols = hiddencols; - this.hiddenRepSeqs = hiddenRepSeqs; + this.viewname = vname; + this.hidseqs = hseqs; + this.hiddencols = hcols; + this.hiddenRepSeqs = hRepSeqs; } } @@ -142,7 +141,8 @@ public class AnnotationFile */ public String printAnnotations(AlignmentAnnotation[] annotations, List list, Hashtable properties, - ColumnSelection cs, AlignmentI al, ViewDef view) + HiddenColumns cs, + AlignmentI al, ViewDef view) { if (view != null) { @@ -152,7 +152,7 @@ public class AnnotationFile } if (list == null) { - list = view.visibleGroups; + // list = view.visibleGroups; } if (cs == null) { @@ -171,22 +171,9 @@ public class AnnotationFile if (cs != null && cs.hasHiddenColumns()) { text.append("VIEW_HIDECOLS\t"); - List hc = cs.getHiddenColumns(); - boolean comma = false; - for (int[] r : hc) - { - if (!comma) - { - comma = true; - } - else - { - text.append(","); - } - text.append(r[0]); - text.append("-"); - text.append(r[1]); - } + + String regions = cs.regionsToString(",", "-"); + text.append(regions); text.append("\n"); } // TODO: allow efficient recovery of annotation data shown in several @@ -202,8 +189,8 @@ public class AnnotationFile StringBuffer colours = new StringBuffer(); StringBuffer graphLine = new StringBuffer(); StringBuffer rowprops = new StringBuffer(); - Hashtable graphGroup = new Hashtable(); - Hashtable graphGroup_refs = new Hashtable(); + Hashtable graphGroup = new Hashtable<>(); + Hashtable graphGroup_refs = new Hashtable<>(); BitSet graphGroupSeen = new BitSet(); java.awt.Color color; @@ -537,7 +524,7 @@ public class AnnotationFile return false; } - public void printGroups(List list) + protected void printGroups(List list) { SequenceI seqrep = null; for (SequenceGroup sg : list) @@ -583,7 +570,8 @@ public class AnnotationFile if (sg.cs != null) { text.append("colour="); - text.append(sg.cs.toString()); + text.append(ColourSchemeProperty.getColourName(sg.cs + .getColourScheme())); text.append("\t"); if (sg.cs.getThreshold() != 0) { @@ -665,15 +653,21 @@ public class AnnotationFile String file, DataSourceType protocol) { ColumnSelection colSel = viewport.getColumnSelection(); + HiddenColumns hidden = viewport.getAlignment().getHiddenColumns(); if (colSel == null) { colSel = new ColumnSelection(); } - boolean rslt = readAnnotationFile(viewport.getAlignment(), colSel, + if (hidden == null) + { + hidden = new HiddenColumns(); + } + boolean rslt = readAnnotationFile(viewport.getAlignment(), hidden, file, protocol); - if (rslt && (colSel.hasSelectedColumns() || colSel.hasHiddenColumns())) + if (rslt && (colSel.hasSelectedColumns() || hidden.hasHiddenColumns())) { viewport.setColumnSelection(colSel); + viewport.getAlignment().setHiddenColumns(hidden); } return rslt; @@ -685,7 +679,7 @@ public class AnnotationFile return readAnnotationFile(al, null, file, sourceType); } - public boolean readAnnotationFile(AlignmentI al, ColumnSelection colSel, + public boolean readAnnotationFile(AlignmentI al, HiddenColumns hidden, String file, DataSourceType sourceType) { BufferedReader in = null; @@ -714,7 +708,7 @@ public class AnnotationFile } if (in != null) { - return parseAnnotationFrom(al, colSel, in); + return parseAnnotationFrom(al, hidden, in); } } catch (Exception ex) @@ -737,12 +731,12 @@ public class AnnotationFile private static String GRAPHLINE = "GRAPHLINE", COMBINE = "COMBINE"; - public boolean parseAnnotationFrom(AlignmentI al, ColumnSelection colSel, + public boolean parseAnnotationFrom(AlignmentI al, HiddenColumns hidden, BufferedReader in) throws Exception { nlinesread = 0; - ArrayList combineAnnotation_calls = new ArrayList(); - ArrayList deferredAnnotation_calls = new ArrayList(); + ArrayList combineAnnotation_calls = new ArrayList<>(); + ArrayList deferredAnnotation_calls = new ArrayList<>(); boolean modified = false; String groupRef = null; Hashtable groupRefRows = new Hashtable(); @@ -948,11 +942,11 @@ public class AnnotationFile { if (st.hasMoreTokens()) { - if (colSel == null) + if (hidden == null) { - colSel = new ColumnSelection(); + hidden = new HiddenColumns(); } - parseHideCols(colSel, st.nextToken()); + parseHideCols(hidden, st.nextToken()); } modified = true; continue; @@ -966,7 +960,7 @@ public class AnnotationFile } if (sr != null) { - if (colSel == null) + if (hidden == null) { System.err .println("Cannot process HIDE_INSERTIONS without an alignment view: Ignoring line: " @@ -975,7 +969,7 @@ public class AnnotationFile else { // consider deferring this till after the file has been parsed ? - colSel.hideInsertionsFor(sr); + hidden.hideInsertionsFor(sr); } } modified = true; @@ -1105,7 +1099,7 @@ public class AnnotationFile modified = true; } // Resolve the groupRefs - Hashtable groupRefLookup = new Hashtable(); + Hashtable groupRefLookup = new Hashtable<>(); Enumeration en = groupRefRows.keys(); while (en.hasMoreElements()) @@ -1181,7 +1175,7 @@ public class AnnotationFile return modified; } - private void parseHideCols(ColumnSelection colSel, String nextToken) + private void parseHideCols(HiddenColumns hidden, String nextToken) { StringTokenizer inval = new StringTokenizer(nextToken, ","); while (inval.hasMoreTokens()) @@ -1193,7 +1187,7 @@ public class AnnotationFile from = to = Integer.parseInt(range); if (from >= 0) { - colSel.hideColumns(from, to); + hidden.hideColumns(from, to); } } else @@ -1209,7 +1203,7 @@ public class AnnotationFile } if (from > 0 && to >= from) { - colSel.hideColumns(from, to); + hidden.hideColumns(from, to); } } } @@ -1430,7 +1424,7 @@ public class AnnotationFile value = Float.valueOf(nextToken); } catch (NumberFormatException e) { - System.err.println("Threshold '" + nextToken + System.err.println("line " + nlinesread + ": Threshold '" + nextToken + "' invalid, setting to zero"); } String label = st.hasMoreTokens() ? st.nextToken() : null; @@ -1610,8 +1604,7 @@ public class AnnotationFile if (sg != null) { String keyValue, key, value; - ColourSchemeI def = sg.cs; - sg.cs = null; + ColourSchemeI def = sg.getColourScheme(); while (st.hasMoreTokens()) { keyValue = st.nextToken(); @@ -1624,7 +1617,8 @@ public class AnnotationFile } else if (key.equalsIgnoreCase("colour")) { - sg.cs = ColourSchemeProperty.getColourScheme(al, value); + sg.cs.setColourScheme(ColourSchemeProperty + .getColourScheme(al, value)); } else if (key.equalsIgnoreCase("pidThreshold")) { @@ -1677,9 +1671,8 @@ public class AnnotationFile } else if (key.equalsIgnoreCase("idColour")) { - // consider warning if colour doesn't resolve to a real colour - def = new UserColourScheme(value); - sg.setIdColour(def.findColour()); + Color idColour = ColorUtils.parseColourString(value); + sg.setIdColour(idColour == null ? Color.black : idColour); } else if (key.equalsIgnoreCase("hide")) { @@ -1693,9 +1686,9 @@ public class AnnotationFile } sg.recalcConservation(); } - if (sg.cs == null) + if (sg.getColourScheme() == null) { - sg.cs = def; + sg.setColourScheme(def); } } } @@ -1789,7 +1782,7 @@ public class AnnotationFile return printAnnotations(viewport.isShowAnnotation() ? viewport .getAlignment().getAlignmentAnnotation() : null, viewport .getAlignment().getGroups(), viewport.getAlignment() - .getProperties(), viewport.getColumnSelection(), + .getProperties(), viewport.getAlignment().getHiddenColumns(), viewport.getAlignment(), null); }